Freeze the shared contracts every Media Studio slice builds on: zod DTOs, EDL, platform profile, brand kit, gate and render plan schemas; the media RPC surface with a scaffold router; provider interfaces for sources, inference, rendering, motion graphics and publishing; media background jobs; the Prisma models and migration; and the @rakazo/media domain package signatures. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_0138YqDj3ttfayRwuMKKrqVj
514 lines
18 KiB
SQL
514 lines
18 KiB
SQL
-- CreateTable
|
|
CREATE TABLE "media_sources" (
|
|
"id" TEXT NOT NULL,
|
|
"spaceId" TEXT NOT NULL,
|
|
"ownerUserId" TEXT NOT NULL,
|
|
"kind" TEXT NOT NULL,
|
|
"label" TEXT NOT NULL,
|
|
"config" JSONB NOT NULL DEFAULT '{}',
|
|
"status" TEXT NOT NULL DEFAULT 'idle',
|
|
"error" TEXT,
|
|
"lastSyncCursor" TEXT,
|
|
"lastSyncedAt" TIMESTAMP(3),
|
|
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
"updatedAt" TIMESTAMP(3) NOT NULL,
|
|
|
|
CONSTRAINT "media_sources_pkey" PRIMARY KEY ("id")
|
|
);
|
|
|
|
-- CreateTable
|
|
CREATE TABLE "media_assets" (
|
|
"id" TEXT NOT NULL,
|
|
"spaceId" TEXT NOT NULL,
|
|
"sourceId" TEXT NOT NULL,
|
|
"externalId" TEXT NOT NULL,
|
|
"revision" TEXT,
|
|
"contentHash" TEXT,
|
|
"kind" TEXT NOT NULL,
|
|
"storage" TEXT NOT NULL,
|
|
"storagePath" TEXT,
|
|
"fileName" TEXT,
|
|
"sizeBytes" BIGINT,
|
|
"capturedAt" TIMESTAMP(3),
|
|
"durationMs" INTEGER,
|
|
"width" INTEGER,
|
|
"height" INTEGER,
|
|
"fps" DOUBLE PRECISION,
|
|
"codec" TEXT,
|
|
"orientation" INTEGER,
|
|
"gpsLat" DOUBLE PRECISION,
|
|
"gpsLon" DOUBLE PRECISION,
|
|
"deviceModel" TEXT,
|
|
"albumNames" TEXT[] DEFAULT ARRAY[]::TEXT[],
|
|
"isFavorite" BOOLEAN NOT NULL DEFAULT false,
|
|
"proxyPath" TEXT,
|
|
"thumbPath" TEXT,
|
|
"spritePath" TEXT,
|
|
"qualityScore" DOUBLE PRECISION,
|
|
"analysisVersion" INTEGER NOT NULL DEFAULT 0,
|
|
"ingestState" TEXT NOT NULL DEFAULT 'indexed',
|
|
"ingestError" TEXT,
|
|
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
"updatedAt" TIMESTAMP(3) NOT NULL,
|
|
|
|
CONSTRAINT "media_assets_pkey" PRIMARY KEY ("id")
|
|
);
|
|
|
|
-- CreateTable
|
|
CREATE TABLE "media_uploads" (
|
|
"id" TEXT NOT NULL,
|
|
"spaceId" TEXT NOT NULL,
|
|
"assetId" TEXT NOT NULL,
|
|
"userId" TEXT NOT NULL,
|
|
"sizeBytes" BIGINT NOT NULL,
|
|
"chunkBytes" INTEGER NOT NULL,
|
|
"sha256" TEXT NOT NULL,
|
|
"fileName" TEXT NOT NULL,
|
|
"receivedChunks" INTEGER[] DEFAULT ARRAY[]::INTEGER[],
|
|
"status" TEXT NOT NULL DEFAULT 'open',
|
|
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
"updatedAt" TIMESTAMP(3) NOT NULL,
|
|
|
|
CONSTRAINT "media_uploads_pkey" PRIMARY KEY ("id")
|
|
);
|
|
|
|
-- CreateTable
|
|
CREATE TABLE "media_segments" (
|
|
"id" TEXT NOT NULL,
|
|
"spaceId" TEXT NOT NULL,
|
|
"assetId" TEXT NOT NULL,
|
|
"kind" TEXT NOT NULL,
|
|
"startMs" INTEGER NOT NULL,
|
|
"endMs" INTEGER NOT NULL,
|
|
"scores" JSONB NOT NULL DEFAULT '{}',
|
|
"teaserScore" DOUBLE PRECISION,
|
|
"transcriptExcerpt" TEXT,
|
|
"labels" TEXT[] DEFAULT ARRAY[]::TEXT[],
|
|
"paidOnly" BOOLEAN NOT NULL DEFAULT false,
|
|
"analysisVersion" INTEGER NOT NULL,
|
|
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
|
|
CONSTRAINT "media_segments_pkey" PRIMARY KEY ("id")
|
|
);
|
|
|
|
-- CreateTable
|
|
CREATE TABLE "media_analyses" (
|
|
"id" TEXT NOT NULL,
|
|
"spaceId" TEXT NOT NULL,
|
|
"assetId" TEXT NOT NULL,
|
|
"kind" TEXT NOT NULL,
|
|
"modelId" TEXT NOT NULL,
|
|
"modelVersion" TEXT NOT NULL,
|
|
"data" JSONB,
|
|
"dataPath" TEXT,
|
|
"vectors" BYTEA,
|
|
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
|
|
CONSTRAINT "media_analyses_pkey" PRIMARY KEY ("id")
|
|
);
|
|
|
|
-- CreateTable
|
|
CREATE TABLE "media_collections" (
|
|
"id" TEXT NOT NULL,
|
|
"spaceId" TEXT NOT NULL,
|
|
"kind" TEXT NOT NULL,
|
|
"title" TEXT NOT NULL,
|
|
"labelSource" TEXT NOT NULL DEFAULT 'rule',
|
|
"startAt" TIMESTAMP(3),
|
|
"endAt" TIMESTAMP(3),
|
|
"centroidLat" DOUBLE PRECISION,
|
|
"centroidLon" DOUBLE PRECISION,
|
|
"coverAssetId" TEXT,
|
|
"clusterKey" TEXT,
|
|
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
"updatedAt" TIMESTAMP(3) NOT NULL,
|
|
|
|
CONSTRAINT "media_collections_pkey" PRIMARY KEY ("id")
|
|
);
|
|
|
|
-- CreateTable
|
|
CREATE TABLE "media_collection_items" (
|
|
"collectionId" TEXT NOT NULL,
|
|
"assetId" TEXT NOT NULL,
|
|
"position" INTEGER NOT NULL,
|
|
|
|
CONSTRAINT "media_collection_items_pkey" PRIMARY KEY ("collectionId","assetId")
|
|
);
|
|
|
|
-- CreateTable
|
|
CREATE TABLE "media_people" (
|
|
"id" TEXT NOT NULL,
|
|
"spaceId" TEXT NOT NULL,
|
|
"displayName" TEXT NOT NULL,
|
|
"isSelf" BOOLEAN NOT NULL DEFAULT false,
|
|
"confirmed" BOOLEAN NOT NULL DEFAULT false,
|
|
"anonymizeByDefault" TEXT NOT NULL DEFAULT 'none',
|
|
"centroid" BYTEA,
|
|
"consentArtifactId" TEXT,
|
|
"consentRecordedAt" TIMESTAMP(3),
|
|
"consentRecordedBy" TEXT,
|
|
"ageVerifiedAt" TIMESTAMP(3),
|
|
"ageVerificationMethod" TEXT NOT NULL DEFAULT 'none',
|
|
"syntheticSeed" INTEGER,
|
|
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
"updatedAt" TIMESTAMP(3) NOT NULL,
|
|
|
|
CONSTRAINT "media_people_pkey" PRIMARY KEY ("id")
|
|
);
|
|
|
|
-- CreateTable
|
|
CREATE TABLE "media_face_tracks" (
|
|
"id" TEXT NOT NULL,
|
|
"spaceId" TEXT NOT NULL,
|
|
"assetId" TEXT NOT NULL,
|
|
"personId" TEXT,
|
|
"startMs" INTEGER NOT NULL,
|
|
"endMs" INTEGER NOT NULL,
|
|
"confidenceMin" DOUBLE PRECISION NOT NULL,
|
|
"keyframesPath" TEXT NOT NULL,
|
|
"embedding" BYTEA,
|
|
"modelVersion" TEXT NOT NULL,
|
|
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
|
|
CONSTRAINT "media_face_tracks_pkey" PRIMARY KEY ("id")
|
|
);
|
|
|
|
-- CreateTable
|
|
CREATE TABLE "media_marks" (
|
|
"id" TEXT NOT NULL,
|
|
"spaceId" TEXT NOT NULL,
|
|
"kind" TEXT NOT NULL,
|
|
"label" TEXT,
|
|
"personId" TEXT,
|
|
"assetId" TEXT,
|
|
"prompt" JSONB,
|
|
"treatment" TEXT NOT NULL,
|
|
"maskDir" TEXT,
|
|
"qualityScore" DOUBLE PRECISION,
|
|
"suggestedFallback" TEXT,
|
|
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
"updatedAt" TIMESTAMP(3) NOT NULL,
|
|
|
|
CONSTRAINT "media_marks_pkey" PRIMARY KEY ("id")
|
|
);
|
|
|
|
-- CreateTable
|
|
CREATE TABLE "media_brand_kits" (
|
|
"id" TEXT NOT NULL,
|
|
"spaceId" TEXT NOT NULL,
|
|
"kit" JSONB NOT NULL,
|
|
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
"updatedAt" TIMESTAMP(3) NOT NULL,
|
|
|
|
CONSTRAINT "media_brand_kits_pkey" PRIMARY KEY ("id")
|
|
);
|
|
|
|
-- CreateTable
|
|
CREATE TABLE "media_projects" (
|
|
"id" TEXT NOT NULL,
|
|
"spaceId" TEXT NOT NULL,
|
|
"createdBy" TEXT NOT NULL,
|
|
"title" TEXT NOT NULL,
|
|
"goal" TEXT NOT NULL,
|
|
"status" TEXT NOT NULL DEFAULT 'draft',
|
|
"brandKitId" TEXT,
|
|
"collectionIds" TEXT[] DEFAULT ARRAY[]::TEXT[],
|
|
"assetIds" TEXT[] DEFAULT ARRAY[]::TEXT[],
|
|
"profileIds" TEXT[] DEFAULT ARRAY[]::TEXT[],
|
|
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
"updatedAt" TIMESTAMP(3) NOT NULL,
|
|
|
|
CONSTRAINT "media_projects_pkey" PRIMARY KEY ("id")
|
|
);
|
|
|
|
-- CreateTable
|
|
CREATE TABLE "media_edit_plans" (
|
|
"id" TEXT NOT NULL,
|
|
"spaceId" TEXT NOT NULL,
|
|
"projectId" TEXT NOT NULL,
|
|
"profileId" TEXT NOT NULL,
|
|
"version" INTEGER NOT NULL,
|
|
"edl" JSONB NOT NULL,
|
|
"createdBy" TEXT NOT NULL,
|
|
"rationale" TEXT,
|
|
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
|
|
CONSTRAINT "media_edit_plans_pkey" PRIMARY KEY ("id")
|
|
);
|
|
|
|
-- CreateTable
|
|
CREATE TABLE "media_renders" (
|
|
"id" TEXT NOT NULL,
|
|
"spaceId" TEXT NOT NULL,
|
|
"projectId" TEXT NOT NULL,
|
|
"planId" TEXT NOT NULL,
|
|
"profileId" TEXT NOT NULL,
|
|
"quality" TEXT NOT NULL,
|
|
"status" TEXT NOT NULL DEFAULT 'queued',
|
|
"progress" DOUBLE PRECISION NOT NULL DEFAULT 0,
|
|
"outputs" JSONB NOT NULL DEFAULT '[]',
|
|
"gateReport" JSONB,
|
|
"ffprobe" JSONB,
|
|
"autoFixRound" INTEGER NOT NULL DEFAULT 0,
|
|
"error" TEXT,
|
|
"createdBy" TEXT NOT NULL,
|
|
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
"updatedAt" TIMESTAMP(3) NOT NULL,
|
|
|
|
CONSTRAINT "media_renders_pkey" PRIMARY KEY ("id")
|
|
);
|
|
|
|
-- CreateTable
|
|
CREATE TABLE "media_publications" (
|
|
"id" TEXT NOT NULL,
|
|
"spaceId" TEXT NOT NULL,
|
|
"renderId" TEXT NOT NULL,
|
|
"profileId" TEXT NOT NULL,
|
|
"destination" TEXT NOT NULL,
|
|
"status" TEXT NOT NULL DEFAULT 'draft',
|
|
"scheduledAt" TIMESTAMP(3),
|
|
"publishedAt" TIMESTAMP(3),
|
|
"externalUrl" TEXT,
|
|
"targetUrl" TEXT,
|
|
"trackingUrl" TEXT,
|
|
"utm" JSONB,
|
|
"title" TEXT,
|
|
"caption" TEXT,
|
|
"tags" TEXT[] DEFAULT ARRAY[]::TEXT[],
|
|
"thumbnailVariant" TEXT,
|
|
"bundleArtifactId" TEXT,
|
|
"createdBy" TEXT NOT NULL,
|
|
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
"updatedAt" TIMESTAMP(3) NOT NULL,
|
|
|
|
CONSTRAINT "media_publications_pkey" PRIMARY KEY ("id")
|
|
);
|
|
|
|
-- CreateTable
|
|
CREATE TABLE "media_metrics" (
|
|
"id" TEXT NOT NULL,
|
|
"spaceId" TEXT NOT NULL,
|
|
"publicationId" TEXT NOT NULL,
|
|
"observedAt" TIMESTAMP(3) NOT NULL,
|
|
"views" INTEGER NOT NULL DEFAULT 0,
|
|
"clicks" INTEGER NOT NULL DEFAULT 0,
|
|
"conversions" INTEGER NOT NULL DEFAULT 0,
|
|
"revenueCents" INTEGER NOT NULL DEFAULT 0,
|
|
"currency" TEXT NOT NULL DEFAULT 'EUR',
|
|
"source" TEXT NOT NULL,
|
|
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
|
|
CONSTRAINT "media_metrics_pkey" PRIMARY KEY ("id")
|
|
);
|
|
|
|
-- CreateTable
|
|
CREATE TABLE "media_metric_mappings" (
|
|
"id" TEXT NOT NULL,
|
|
"spaceId" TEXT NOT NULL,
|
|
"name" TEXT NOT NULL,
|
|
"mapping" JSONB NOT NULL,
|
|
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
"updatedAt" TIMESTAMP(3) NOT NULL,
|
|
|
|
CONSTRAINT "media_metric_mappings_pkey" PRIMARY KEY ("id")
|
|
);
|
|
|
|
-- CreateTable
|
|
CREATE TABLE "media_teaser_models" (
|
|
"spaceId" TEXT NOT NULL,
|
|
"weights" JSONB NOT NULL,
|
|
"sampleCount" INTEGER NOT NULL,
|
|
"updatedAt" TIMESTAMP(3) NOT NULL,
|
|
|
|
CONSTRAINT "media_teaser_models_pkey" PRIMARY KEY ("spaceId")
|
|
);
|
|
|
|
-- CreateIndex
|
|
CREATE INDEX "media_sources_spaceId_createdAt_idx" ON "media_sources"("spaceId", "createdAt");
|
|
|
|
-- CreateIndex
|
|
CREATE INDEX "media_assets_spaceId_capturedAt_idx" ON "media_assets"("spaceId", "capturedAt");
|
|
|
|
-- CreateIndex
|
|
CREATE INDEX "media_assets_spaceId_kind_capturedAt_idx" ON "media_assets"("spaceId", "kind", "capturedAt");
|
|
|
|
-- CreateIndex
|
|
CREATE INDEX "media_assets_spaceId_ingestState_idx" ON "media_assets"("spaceId", "ingestState");
|
|
|
|
-- CreateIndex
|
|
CREATE INDEX "media_assets_contentHash_idx" ON "media_assets"("contentHash");
|
|
|
|
-- CreateIndex
|
|
CREATE UNIQUE INDEX "media_assets_sourceId_externalId_key" ON "media_assets"("sourceId", "externalId");
|
|
|
|
-- CreateIndex
|
|
CREATE INDEX "media_uploads_assetId_idx" ON "media_uploads"("assetId");
|
|
|
|
-- CreateIndex
|
|
CREATE INDEX "media_uploads_spaceId_status_idx" ON "media_uploads"("spaceId", "status");
|
|
|
|
-- CreateIndex
|
|
CREATE INDEX "media_segments_assetId_startMs_idx" ON "media_segments"("assetId", "startMs");
|
|
|
|
-- CreateIndex
|
|
CREATE INDEX "media_segments_spaceId_teaserScore_idx" ON "media_segments"("spaceId", "teaserScore");
|
|
|
|
-- CreateIndex
|
|
CREATE INDEX "media_analyses_spaceId_kind_idx" ON "media_analyses"("spaceId", "kind");
|
|
|
|
-- CreateIndex
|
|
CREATE UNIQUE INDEX "media_analyses_assetId_kind_modelVersion_key" ON "media_analyses"("assetId", "kind", "modelVersion");
|
|
|
|
-- CreateIndex
|
|
CREATE INDEX "media_collections_spaceId_kind_startAt_idx" ON "media_collections"("spaceId", "kind", "startAt");
|
|
|
|
-- CreateIndex
|
|
CREATE UNIQUE INDEX "media_collections_spaceId_kind_clusterKey_key" ON "media_collections"("spaceId", "kind", "clusterKey");
|
|
|
|
-- CreateIndex
|
|
CREATE INDEX "media_collection_items_assetId_idx" ON "media_collection_items"("assetId");
|
|
|
|
-- CreateIndex
|
|
CREATE INDEX "media_people_spaceId_idx" ON "media_people"("spaceId");
|
|
|
|
-- CreateIndex
|
|
CREATE INDEX "media_face_tracks_assetId_idx" ON "media_face_tracks"("assetId");
|
|
|
|
-- CreateIndex
|
|
CREATE INDEX "media_face_tracks_personId_idx" ON "media_face_tracks"("personId");
|
|
|
|
-- CreateIndex
|
|
CREATE INDEX "media_marks_spaceId_personId_idx" ON "media_marks"("spaceId", "personId");
|
|
|
|
-- CreateIndex
|
|
CREATE INDEX "media_marks_assetId_idx" ON "media_marks"("assetId");
|
|
|
|
-- CreateIndex
|
|
CREATE INDEX "media_brand_kits_spaceId_idx" ON "media_brand_kits"("spaceId");
|
|
|
|
-- CreateIndex
|
|
CREATE INDEX "media_projects_spaceId_updatedAt_idx" ON "media_projects"("spaceId", "updatedAt");
|
|
|
|
-- CreateIndex
|
|
CREATE UNIQUE INDEX "media_edit_plans_projectId_profileId_version_key" ON "media_edit_plans"("projectId", "profileId", "version");
|
|
|
|
-- CreateIndex
|
|
CREATE INDEX "media_renders_projectId_createdAt_idx" ON "media_renders"("projectId", "createdAt");
|
|
|
|
-- CreateIndex
|
|
CREATE INDEX "media_renders_spaceId_status_idx" ON "media_renders"("spaceId", "status");
|
|
|
|
-- CreateIndex
|
|
CREATE INDEX "media_publications_spaceId_createdAt_idx" ON "media_publications"("spaceId", "createdAt");
|
|
|
|
-- CreateIndex
|
|
CREATE INDEX "media_publications_renderId_idx" ON "media_publications"("renderId");
|
|
|
|
-- CreateIndex
|
|
CREATE INDEX "media_metrics_spaceId_observedAt_idx" ON "media_metrics"("spaceId", "observedAt");
|
|
|
|
-- CreateIndex
|
|
CREATE UNIQUE INDEX "media_metrics_publicationId_observedAt_source_key" ON "media_metrics"("publicationId", "observedAt", "source");
|
|
|
|
-- CreateIndex
|
|
CREATE UNIQUE INDEX "media_metric_mappings_spaceId_name_key" ON "media_metric_mappings"("spaceId", "name");
|
|
|
|
-- AddForeignKey
|
|
ALTER TABLE "media_sources" ADD CONSTRAINT "media_sources_spaceId_fkey" FOREIGN KEY ("spaceId") REFERENCES "spaces"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|
|
|
|
-- AddForeignKey
|
|
ALTER TABLE "media_assets" ADD CONSTRAINT "media_assets_spaceId_fkey" FOREIGN KEY ("spaceId") REFERENCES "spaces"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|
|
|
|
-- AddForeignKey
|
|
ALTER TABLE "media_assets" ADD CONSTRAINT "media_assets_sourceId_fkey" FOREIGN KEY ("sourceId") REFERENCES "media_sources"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|
|
|
|
-- AddForeignKey
|
|
ALTER TABLE "media_uploads" ADD CONSTRAINT "media_uploads_spaceId_fkey" FOREIGN KEY ("spaceId") REFERENCES "spaces"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|
|
|
|
-- AddForeignKey
|
|
ALTER TABLE "media_uploads" ADD CONSTRAINT "media_uploads_assetId_fkey" FOREIGN KEY ("assetId") REFERENCES "media_assets"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|
|
|
|
-- AddForeignKey
|
|
ALTER TABLE "media_segments" ADD CONSTRAINT "media_segments_spaceId_fkey" FOREIGN KEY ("spaceId") REFERENCES "spaces"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|
|
|
|
-- AddForeignKey
|
|
ALTER TABLE "media_segments" ADD CONSTRAINT "media_segments_assetId_fkey" FOREIGN KEY ("assetId") REFERENCES "media_assets"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|
|
|
|
-- AddForeignKey
|
|
ALTER TABLE "media_analyses" ADD CONSTRAINT "media_analyses_spaceId_fkey" FOREIGN KEY ("spaceId") REFERENCES "spaces"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|
|
|
|
-- AddForeignKey
|
|
ALTER TABLE "media_analyses" ADD CONSTRAINT "media_analyses_assetId_fkey" FOREIGN KEY ("assetId") REFERENCES "media_assets"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|
|
|
|
-- AddForeignKey
|
|
ALTER TABLE "media_collections" ADD CONSTRAINT "media_collections_spaceId_fkey" FOREIGN KEY ("spaceId") REFERENCES "spaces"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|
|
|
|
-- AddForeignKey
|
|
ALTER TABLE "media_collection_items" ADD CONSTRAINT "media_collection_items_collectionId_fkey" FOREIGN KEY ("collectionId") REFERENCES "media_collections"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|
|
|
|
-- AddForeignKey
|
|
ALTER TABLE "media_collection_items" ADD CONSTRAINT "media_collection_items_assetId_fkey" FOREIGN KEY ("assetId") REFERENCES "media_assets"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|
|
|
|
-- AddForeignKey
|
|
ALTER TABLE "media_people" ADD CONSTRAINT "media_people_spaceId_fkey" FOREIGN KEY ("spaceId") REFERENCES "spaces"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|
|
|
|
-- AddForeignKey
|
|
ALTER TABLE "media_face_tracks" ADD CONSTRAINT "media_face_tracks_spaceId_fkey" FOREIGN KEY ("spaceId") REFERENCES "spaces"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|
|
|
|
-- AddForeignKey
|
|
ALTER TABLE "media_face_tracks" ADD CONSTRAINT "media_face_tracks_assetId_fkey" FOREIGN KEY ("assetId") REFERENCES "media_assets"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|
|
|
|
-- AddForeignKey
|
|
ALTER TABLE "media_face_tracks" ADD CONSTRAINT "media_face_tracks_personId_fkey" FOREIGN KEY ("personId") REFERENCES "media_people"("id") ON DELETE SET NULL ON UPDATE CASCADE;
|
|
|
|
-- AddForeignKey
|
|
ALTER TABLE "media_marks" ADD CONSTRAINT "media_marks_spaceId_fkey" FOREIGN KEY ("spaceId") REFERENCES "spaces"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|
|
|
|
-- AddForeignKey
|
|
ALTER TABLE "media_marks" ADD CONSTRAINT "media_marks_personId_fkey" FOREIGN KEY ("personId") REFERENCES "media_people"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|
|
|
|
-- AddForeignKey
|
|
ALTER TABLE "media_marks" ADD CONSTRAINT "media_marks_assetId_fkey" FOREIGN KEY ("assetId") REFERENCES "media_assets"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|
|
|
|
-- AddForeignKey
|
|
ALTER TABLE "media_brand_kits" ADD CONSTRAINT "media_brand_kits_spaceId_fkey" FOREIGN KEY ("spaceId") REFERENCES "spaces"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|
|
|
|
-- AddForeignKey
|
|
ALTER TABLE "media_projects" ADD CONSTRAINT "media_projects_spaceId_fkey" FOREIGN KEY ("spaceId") REFERENCES "spaces"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|
|
|
|
-- AddForeignKey
|
|
ALTER TABLE "media_projects" ADD CONSTRAINT "media_projects_brandKitId_fkey" FOREIGN KEY ("brandKitId") REFERENCES "media_brand_kits"("id") ON DELETE SET NULL ON UPDATE CASCADE;
|
|
|
|
-- AddForeignKey
|
|
ALTER TABLE "media_edit_plans" ADD CONSTRAINT "media_edit_plans_spaceId_fkey" FOREIGN KEY ("spaceId") REFERENCES "spaces"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|
|
|
|
-- AddForeignKey
|
|
ALTER TABLE "media_edit_plans" ADD CONSTRAINT "media_edit_plans_projectId_fkey" FOREIGN KEY ("projectId") REFERENCES "media_projects"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|
|
|
|
-- AddForeignKey
|
|
ALTER TABLE "media_renders" ADD CONSTRAINT "media_renders_spaceId_fkey" FOREIGN KEY ("spaceId") REFERENCES "spaces"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|
|
|
|
-- AddForeignKey
|
|
ALTER TABLE "media_renders" ADD CONSTRAINT "media_renders_projectId_fkey" FOREIGN KEY ("projectId") REFERENCES "media_projects"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|
|
|
|
-- AddForeignKey
|
|
ALTER TABLE "media_renders" ADD CONSTRAINT "media_renders_planId_fkey" FOREIGN KEY ("planId") REFERENCES "media_edit_plans"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|
|
|
|
-- AddForeignKey
|
|
ALTER TABLE "media_publications" ADD CONSTRAINT "media_publications_spaceId_fkey" FOREIGN KEY ("spaceId") REFERENCES "spaces"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|
|
|
|
-- AddForeignKey
|
|
ALTER TABLE "media_publications" ADD CONSTRAINT "media_publications_renderId_fkey" FOREIGN KEY ("renderId") REFERENCES "media_renders"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|
|
|
|
-- AddForeignKey
|
|
ALTER TABLE "media_metrics" ADD CONSTRAINT "media_metrics_spaceId_fkey" FOREIGN KEY ("spaceId") REFERENCES "spaces"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|
|
|
|
-- AddForeignKey
|
|
ALTER TABLE "media_metrics" ADD CONSTRAINT "media_metrics_publicationId_fkey" FOREIGN KEY ("publicationId") REFERENCES "media_publications"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|
|
|
|
-- AddForeignKey
|
|
ALTER TABLE "media_metric_mappings" ADD CONSTRAINT "media_metric_mappings_spaceId_fkey" FOREIGN KEY ("spaceId") REFERENCES "spaces"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|
|
|
|
-- AddForeignKey
|
|
ALTER TABLE "media_teaser_models" ADD CONSTRAINT "media_teaser_models_spaceId_fkey" FOREIGN KEY ("spaceId") REFERENCES "spaces"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|