CREATE TABLE IF NOT EXISTS "public"."video_upload" ( "id" text PRIMARY KEY NOT NULL, "title" text NOT NULL, "description" text DEFAULT '' NOT NULL, "video_path" text NOT NULL, "thumbnail_path" text, "original_filename" text NOT NULL, "mime_type" text NOT NULL, "size" bigint NOT NULL, "scheduled_at" timestamptz, "status" text DEFAULT 'draft' NOT NULL, "youtube_settings" jsonb DEFAULT '{}'::jsonb NOT NULL, "tiktok_settings" jsonb DEFAULT '{}'::jsonb NOT NULL, "created_by_discord_id" text NOT NULL, "created_at" timestamptz DEFAULT now() NOT NULL, "updated_at" timestamptz DEFAULT now() NOT NULL ); --> statement-breakpoint CREATE INDEX IF NOT EXISTS "video_upload_status_scheduled_idx" ON "public"."video_upload" ("status", "scheduled_at"); --> statement-breakpoint CREATE TABLE IF NOT EXISTS "public"."video_upload_job" ( "id" text PRIMARY KEY NOT NULL, "upload_id" text NOT NULL REFERENCES "public"."video_upload"("id") ON DELETE cascade, "platform" text NOT NULL, "status" text DEFAULT 'pending' NOT NULL, "external_id" text, "external_url" text, "error" text, "attempts" integer DEFAULT 0 NOT NULL, "started_at" timestamptz, "completed_at" timestamptz, "created_at" timestamptz DEFAULT now() NOT NULL ); --> statement-breakpoint CREATE INDEX IF NOT EXISTS "video_upload_job_upload_platform_idx" ON "public"."video_upload_job" ("upload_id", "platform");