CREATE TYPE "public"."sync_status" AS ENUM('idle', 'syncing', 'errored');--> statement-breakpoint CREATE TYPE "public"."video_scan_status" AS ENUM('pending', 'in_progress', 'completed', 'failed');--> statement-breakpoint CREATE TABLE "video_scan_jobs" ( "id" text PRIMARY KEY NOT NULL, "channel_id" text NOT NULL, "user_id" text NOT NULL, "status" "video_scan_status" DEFAULT 'pending' NOT NULL, "progress" integer DEFAULT 0 NOT NULL, "total_videos" integer, "scanned_videos" integer DEFAULT 0 NOT NULL, "error_message" text, "inngest_run_id" text, "created_at" timestamp (3) with time zone DEFAULT now() NOT NULL, "updated_at" timestamp (3) with time zone DEFAULT now() NOT NULL ); --> statement-breakpoint CREATE TABLE "youtube_channels" ( "id" text PRIMARY KEY NOT NULL, "creator_id" text NOT NULL, "channel_id" text NOT NULL, "channel_name" text NOT NULL, "subscriber_count" integer, "thumbnail_url" text, "connected_at" timestamp DEFAULT now() NOT NULL, "sync_status" "sync_status" DEFAULT 'idle' NOT NULL, CONSTRAINT "youtube_channels_channel_id_unique" UNIQUE("channel_id") ); --> statement-breakpoint CREATE TABLE "youtube_videos" ( "id" text PRIMARY KEY NOT NULL, "channel_id" text NOT NULL, "video_id" text NOT NULL, "title" text NOT NULL, "description" text, "thumbnail_url" text, "duration" text, "view_count" integer, "published_at" timestamp (3) with time zone, "created_at" timestamp (3) with time zone DEFAULT now() NOT NULL, "updated_at" timestamp (3) with time zone DEFAULT now() NOT NULL, CONSTRAINT "youtube_videos_video_id_unique" UNIQUE("video_id") ); --> statement-breakpoint ALTER TABLE "video_scan_jobs" ADD CONSTRAINT "video_scan_jobs_channel_id_youtube_channels_id_fk" FOREIGN KEY ("channel_id") REFERENCES "public"."youtube_channels"("id") ON DELETE cascade ON UPDATE no action;--> statement-breakpoint ALTER TABLE "video_scan_jobs" ADD CONSTRAINT "video_scan_jobs_user_id_users_id_fk" FOREIGN KEY ("user_id") REFERENCES "public"."users"("id") ON DELETE no action ON UPDATE no action;--> statement-breakpoint ALTER TABLE "youtube_channels" ADD CONSTRAINT "youtube_channels_creator_id_users_id_fk" FOREIGN KEY ("creator_id") REFERENCES "public"."users"("id") ON DELETE no action ON UPDATE no action;--> statement-breakpoint ALTER TABLE "youtube_videos" ADD CONSTRAINT "youtube_videos_channel_id_youtube_channels_id_fk" FOREIGN KEY ("channel_id") REFERENCES "public"."youtube_channels"("id") ON DELETE cascade ON UPDATE no action;--> statement-breakpoint CREATE UNIQUE INDEX "creator_channel_idx" ON "youtube_channels" USING btree ("creator_id","channel_id");--> statement-breakpoint CREATE UNIQUE INDEX "channel_video_idx" ON "youtube_videos" USING btree ("channel_id","video_id");