db: initial migration + container başlangıcında otomatik migrate deploy
Postgres canlıydı ama şema hiç uygulanmamıştı (migrations/ klasörü boştu). Bu ortamdan Coolify'ın Postgres'ine ağ erişimi yok (5432 filtreli), bu yüzden `prisma migrate dev` yerine offline schema diff (`migrate diff --from-empty`) ile ilk migration SQL'i üretildi. api-daemon container'ı artık başlarken `prisma migrate deploy` çalıştırıyor. Tüm servislere restart: unless-stopped eklendi ki Postgres henüz hazır değilken başlayan container kendini toparlasın. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
@@ -12,4 +12,4 @@ COPY . .
|
|||||||
RUN pnpm install
|
RUN pnpm install
|
||||||
RUN pnpm --filter @streamclipper/db exec prisma generate
|
RUN pnpm --filter @streamclipper/db exec prisma generate
|
||||||
|
|
||||||
CMD ["pnpm", "--filter", "@streamclipper/api-daemon", "dev"]
|
CMD ["sh", "-c", "pnpm --filter @streamclipper/db exec prisma migrate deploy && pnpm --filter @streamclipper/api-daemon dev"]
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
services:
|
services:
|
||||||
sc_redis:
|
sc_redis:
|
||||||
image: redis:7-alpine
|
image: redis:7-alpine
|
||||||
|
restart: unless-stopped
|
||||||
ports:
|
ports:
|
||||||
- "6379:6379"
|
- "6379:6379"
|
||||||
volumes:
|
volumes:
|
||||||
@@ -8,6 +9,7 @@ services:
|
|||||||
|
|
||||||
sc_postgres:
|
sc_postgres:
|
||||||
image: postgres:16-alpine
|
image: postgres:16-alpine
|
||||||
|
restart: unless-stopped
|
||||||
environment:
|
environment:
|
||||||
POSTGRES_USER: streamclipper
|
POSTGRES_USER: streamclipper
|
||||||
POSTGRES_PASSWORD: streamclipper
|
POSTGRES_PASSWORD: streamclipper
|
||||||
@@ -21,6 +23,7 @@ services:
|
|||||||
build:
|
build:
|
||||||
context: .
|
context: .
|
||||||
dockerfile: apps/api-daemon/Dockerfile
|
dockerfile: apps/api-daemon/Dockerfile
|
||||||
|
restart: unless-stopped
|
||||||
environment:
|
environment:
|
||||||
REDIS_URL: redis://sc_redis:6379
|
REDIS_URL: redis://sc_redis:6379
|
||||||
DATABASE_URL: postgresql://streamclipper:streamclipper@sc_postgres:5432/streamclipper
|
DATABASE_URL: postgresql://streamclipper:streamclipper@sc_postgres:5432/streamclipper
|
||||||
@@ -43,6 +46,7 @@ services:
|
|||||||
build:
|
build:
|
||||||
context: .
|
context: .
|
||||||
dockerfile: apps/worker/Dockerfile
|
dockerfile: apps/worker/Dockerfile
|
||||||
|
restart: unless-stopped
|
||||||
environment:
|
environment:
|
||||||
REDIS_URL: redis://sc_redis:6379
|
REDIS_URL: redis://sc_redis:6379
|
||||||
DATABASE_URL: postgresql://streamclipper:streamclipper@sc_postgres:5432/streamclipper
|
DATABASE_URL: postgresql://streamclipper:streamclipper@sc_postgres:5432/streamclipper
|
||||||
@@ -61,6 +65,7 @@ services:
|
|||||||
build:
|
build:
|
||||||
context: .
|
context: .
|
||||||
dockerfile: apps/frontend/Dockerfile
|
dockerfile: apps/frontend/Dockerfile
|
||||||
|
restart: unless-stopped
|
||||||
environment:
|
environment:
|
||||||
DATABASE_URL: postgresql://streamclipper:streamclipper@sc_postgres:5432/streamclipper
|
DATABASE_URL: postgresql://streamclipper:streamclipper@sc_postgres:5432/streamclipper
|
||||||
ports:
|
ports:
|
||||||
|
|||||||
@@ -0,0 +1,73 @@
|
|||||||
|
-- CreateSchema
|
||||||
|
CREATE SCHEMA IF NOT EXISTS "public";
|
||||||
|
|
||||||
|
-- CreateEnum
|
||||||
|
CREATE TYPE "RawSegmentStatus" AS ENUM ('PENDING', 'PROCESSED', 'DISCARDED');
|
||||||
|
|
||||||
|
-- CreateEnum
|
||||||
|
CREATE TYPE "CandidateSegmentStatus" AS ENUM ('PENDING_STT', 'TRANSCRIBED', 'FAILED');
|
||||||
|
|
||||||
|
-- CreateTable
|
||||||
|
CREATE TABLE "channels" (
|
||||||
|
"id" TEXT NOT NULL,
|
||||||
|
"name" TEXT NOT NULL,
|
||||||
|
"youtube_handle" TEXT NOT NULL,
|
||||||
|
"channel_id" TEXT NOT NULL,
|
||||||
|
"is_active" BOOLEAN NOT NULL DEFAULT true,
|
||||||
|
"last_checked_at" TIMESTAMP(3),
|
||||||
|
"created_at" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||||
|
|
||||||
|
CONSTRAINT "channels_pkey" PRIMARY KEY ("id")
|
||||||
|
);
|
||||||
|
|
||||||
|
-- CreateTable
|
||||||
|
CREATE TABLE "stream_sessions" (
|
||||||
|
"id" TEXT NOT NULL,
|
||||||
|
"channel_id" TEXT NOT NULL,
|
||||||
|
"live_video_id" TEXT,
|
||||||
|
"started_at" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||||
|
"ended_at" TIMESTAMP(3),
|
||||||
|
"total_segments" INTEGER NOT NULL DEFAULT 0,
|
||||||
|
|
||||||
|
CONSTRAINT "stream_sessions_pkey" PRIMARY KEY ("id")
|
||||||
|
);
|
||||||
|
|
||||||
|
-- CreateTable
|
||||||
|
CREATE TABLE "raw_segments" (
|
||||||
|
"id" TEXT NOT NULL,
|
||||||
|
"session_id" TEXT NOT NULL,
|
||||||
|
"file_path" TEXT NOT NULL,
|
||||||
|
"duration" INTEGER NOT NULL,
|
||||||
|
"started_at" TIMESTAMP(3) NOT NULL,
|
||||||
|
"status" "RawSegmentStatus" NOT NULL DEFAULT 'PENDING',
|
||||||
|
"created_at" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||||
|
|
||||||
|
CONSTRAINT "raw_segments_pkey" PRIMARY KEY ("id")
|
||||||
|
);
|
||||||
|
|
||||||
|
-- CreateTable
|
||||||
|
CREATE TABLE "candidate_segments" (
|
||||||
|
"id" TEXT NOT NULL,
|
||||||
|
"raw_segment_id" TEXT NOT NULL,
|
||||||
|
"start_sec" INTEGER NOT NULL,
|
||||||
|
"end_sec" INTEGER NOT NULL,
|
||||||
|
"audio_peak_score" DOUBLE PRECISION,
|
||||||
|
"chat_velocity_score" DOUBLE PRECISION,
|
||||||
|
"transcript_json" JSONB,
|
||||||
|
"status" "CandidateSegmentStatus" NOT NULL DEFAULT 'PENDING_STT',
|
||||||
|
"created_at" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||||
|
|
||||||
|
CONSTRAINT "candidate_segments_pkey" PRIMARY KEY ("id")
|
||||||
|
);
|
||||||
|
|
||||||
|
-- CreateIndex
|
||||||
|
CREATE UNIQUE INDEX "channels_channel_id_key" ON "channels"("channel_id");
|
||||||
|
|
||||||
|
-- AddForeignKey
|
||||||
|
ALTER TABLE "stream_sessions" ADD CONSTRAINT "stream_sessions_channel_id_fkey" FOREIGN KEY ("channel_id") REFERENCES "channels"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
|
||||||
|
|
||||||
|
-- AddForeignKey
|
||||||
|
ALTER TABLE "raw_segments" ADD CONSTRAINT "raw_segments_session_id_fkey" FOREIGN KEY ("session_id") REFERENCES "stream_sessions"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
|
||||||
|
|
||||||
|
-- AddForeignKey
|
||||||
|
ALTER TABLE "candidate_segments" ADD CONSTRAINT "candidate_segments_raw_segment_id_fkey" FOREIGN KEY ("raw_segment_id") REFERENCES "raw_segments"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
|
||||||
@@ -0,0 +1,3 @@
|
|||||||
|
# Please do not edit this file manually
|
||||||
|
# It should be added in your version-control system (e.g., Git)
|
||||||
|
provider = "postgresql"
|
||||||
Reference in New Issue
Block a user