Files
ayrisdevandClaude Sonnet 5 0374846cc1 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>
2026-08-30 14:58:34 +03:00

74 lines
2.5 KiB
SQL

-- 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;