Initial commit

This commit is contained in:
twotalesanimation
2026-05-19 22:20:29 +02:00
commit 0fbe856dce
173 changed files with 38316 additions and 0 deletions
@@ -0,0 +1,347 @@
-- CreateEnum
CREATE TYPE "Role" AS ENUM ('ADMIN', 'PRODUCER', 'SUPERVISOR', 'ARTIST', 'CLIENT');
-- CreateEnum
CREATE TYPE "ProjectStatus" AS ENUM ('ACTIVE', 'ON_HOLD', 'COMPLETED', 'ARCHIVED');
-- CreateEnum
CREATE TYPE "ShotStatus" AS ENUM ('WAITING', 'IN_PROGRESS', 'INTERNAL_REVIEW', 'CLIENT_REVIEW', 'REVISIONS', 'APPROVED', 'FINAL');
-- CreateEnum
CREATE TYPE "ShotPriority" AS ENUM ('LOW', 'NORMAL', 'HIGH', 'URGENT');
-- CreateEnum
CREATE TYPE "ApprovalStatus" AS ENUM ('PENDING_REVIEW', 'APPROVED', 'REJECTED', 'NEEDS_CHANGES');
-- CreateEnum
CREATE TYPE "ReviewStatus" AS ENUM ('PENDING', 'INTERNAL_APPROVED', 'CLIENT_APPROVED', 'NEEDS_CHANGES', 'FINAL_APPROVED');
-- CreateEnum
CREATE TYPE "NotificationType" AS ENUM ('VERSION_UPLOADED', 'FEEDBACK_ADDED', 'SHOT_APPROVED', 'SHOT_REJECTED', 'COMMENT_REPLY', 'MENTION', 'REVISION_REQUESTED');
-- CreateTable
CREATE TABLE "users" (
"id" TEXT NOT NULL,
"name" TEXT,
"email" TEXT NOT NULL,
"emailVerified" TIMESTAMP(3),
"image" TEXT,
"passwordHash" TEXT,
"role" "Role" NOT NULL DEFAULT 'ARTIST',
"isActive" BOOLEAN NOT NULL DEFAULT true,
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
"updatedAt" TIMESTAMP(3) NOT NULL,
CONSTRAINT "users_pkey" PRIMARY KEY ("id")
);
-- CreateTable
CREATE TABLE "accounts" (
"id" TEXT NOT NULL,
"userId" TEXT NOT NULL,
"type" TEXT NOT NULL,
"provider" TEXT NOT NULL,
"providerAccountId" TEXT NOT NULL,
"refresh_token" TEXT,
"access_token" TEXT,
"expires_at" INTEGER,
"token_type" TEXT,
"scope" TEXT,
"id_token" TEXT,
"session_state" TEXT,
CONSTRAINT "accounts_pkey" PRIMARY KEY ("id")
);
-- CreateTable
CREATE TABLE "sessions" (
"id" TEXT NOT NULL,
"sessionToken" TEXT NOT NULL,
"userId" TEXT NOT NULL,
"expires" TIMESTAMP(3) NOT NULL,
CONSTRAINT "sessions_pkey" PRIMARY KEY ("id")
);
-- CreateTable
CREATE TABLE "verification_tokens" (
"identifier" TEXT NOT NULL,
"token" TEXT NOT NULL,
"expires" TIMESTAMP(3) NOT NULL
);
-- CreateTable
CREATE TABLE "clients" (
"id" TEXT NOT NULL,
"company" TEXT NOT NULL,
"contactPerson" TEXT NOT NULL,
"email" TEXT NOT NULL,
"phone" TEXT,
"notes" TEXT,
"logoUrl" TEXT,
"isActive" BOOLEAN NOT NULL DEFAULT true,
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
"updatedAt" TIMESTAMP(3) NOT NULL,
CONSTRAINT "clients_pkey" PRIMARY KEY ("id")
);
-- CreateTable
CREATE TABLE "client_access" (
"id" TEXT NOT NULL,
"userId" TEXT NOT NULL,
"clientId" TEXT NOT NULL,
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
CONSTRAINT "client_access_pkey" PRIMARY KEY ("id")
);
-- CreateTable
CREATE TABLE "projects" (
"id" TEXT NOT NULL,
"name" TEXT NOT NULL,
"code" TEXT NOT NULL,
"description" TEXT,
"status" "ProjectStatus" NOT NULL DEFAULT 'ACTIVE',
"dueDate" TIMESTAMP(3),
"startDate" TIMESTAMP(3),
"clientId" TEXT NOT NULL,
"producerId" TEXT,
"supervisorId" TEXT,
"slackWebhook" TEXT,
"slackChannel" TEXT,
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
"updatedAt" TIMESTAMP(3) NOT NULL,
CONSTRAINT "projects_pkey" PRIMARY KEY ("id")
);
-- CreateTable
CREATE TABLE "shots" (
"id" TEXT NOT NULL,
"shotCode" TEXT NOT NULL,
"sequence" TEXT,
"description" TEXT,
"status" "ShotStatus" NOT NULL DEFAULT 'WAITING',
"priority" "ShotPriority" NOT NULL DEFAULT 'NORMAL',
"artistId" TEXT,
"projectId" TEXT NOT NULL,
"frameStart" INTEGER,
"frameEnd" INTEGER,
"fps" DOUBLE PRECISION NOT NULL DEFAULT 24,
"dueDate" TIMESTAMP(3),
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
"updatedAt" TIMESTAMP(3) NOT NULL,
CONSTRAINT "shots_pkey" PRIMARY KEY ("id")
);
-- CreateTable
CREATE TABLE "versions" (
"id" TEXT NOT NULL,
"versionNumber" INTEGER NOT NULL,
"shotId" TEXT NOT NULL,
"artistId" TEXT,
"fileUrl" TEXT NOT NULL,
"fileName" TEXT NOT NULL,
"fileSize" BIGINT,
"mimeType" TEXT,
"thumbnailUrl" TEXT,
"posterUrl" TEXT,
"proxyUrl" TEXT,
"fps" DOUBLE PRECISION NOT NULL DEFAULT 24,
"duration" DOUBLE PRECISION,
"frameCount" INTEGER,
"width" INTEGER,
"height" INTEGER,
"notes" TEXT,
"approvalStatus" "ApprovalStatus" NOT NULL DEFAULT 'PENDING_REVIEW',
"reviewStatus" "ReviewStatus" NOT NULL DEFAULT 'PENDING',
"isLatest" BOOLEAN NOT NULL DEFAULT true,
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
"updatedAt" TIMESTAMP(3) NOT NULL,
CONSTRAINT "versions_pkey" PRIMARY KEY ("id")
);
-- CreateTable
CREATE TABLE "comments" (
"id" TEXT NOT NULL,
"versionId" TEXT NOT NULL,
"authorId" TEXT NOT NULL,
"frameNumber" INTEGER NOT NULL,
"timestamp" DOUBLE PRECISION NOT NULL,
"text" TEXT NOT NULL,
"isResolved" BOOLEAN NOT NULL DEFAULT false,
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
"updatedAt" TIMESTAMP(3) NOT NULL,
CONSTRAINT "comments_pkey" PRIMARY KEY ("id")
);
-- CreateTable
CREATE TABLE "comment_replies" (
"id" TEXT NOT NULL,
"commentId" TEXT NOT NULL,
"authorId" TEXT NOT NULL,
"text" TEXT NOT NULL,
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
"updatedAt" TIMESTAMP(3) NOT NULL,
CONSTRAINT "comment_replies_pkey" PRIMARY KEY ("id")
);
-- CreateTable
CREATE TABLE "annotations" (
"id" TEXT NOT NULL,
"versionId" TEXT NOT NULL,
"commentId" TEXT,
"authorId" TEXT NOT NULL,
"frameNumber" INTEGER NOT NULL,
"drawingData" JSONB NOT NULL,
"color" TEXT NOT NULL DEFAULT '#ef4444',
"isVisible" BOOLEAN NOT NULL DEFAULT true,
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
CONSTRAINT "annotations_pkey" PRIMARY KEY ("id")
);
-- CreateTable
CREATE TABLE "approvals" (
"id" TEXT NOT NULL,
"versionId" TEXT NOT NULL,
"userId" TEXT NOT NULL,
"status" "ApprovalStatus" NOT NULL,
"notes" TEXT,
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
CONSTRAINT "approvals_pkey" PRIMARY KEY ("id")
);
-- CreateTable
CREATE TABLE "notifications" (
"id" TEXT NOT NULL,
"userId" TEXT NOT NULL,
"type" "NotificationType" NOT NULL,
"title" TEXT NOT NULL,
"message" TEXT NOT NULL,
"data" JSONB,
"isRead" BOOLEAN NOT NULL DEFAULT false,
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
CONSTRAINT "notifications_pkey" PRIMARY KEY ("id")
);
-- CreateTable
CREATE TABLE "review_sessions" (
"id" TEXT NOT NULL,
"projectId" TEXT NOT NULL,
"token" TEXT NOT NULL,
"label" TEXT,
"email" TEXT,
"expiresAt" TIMESTAMP(3) NOT NULL,
"isActive" BOOLEAN NOT NULL DEFAULT true,
"accessCount" INTEGER NOT NULL DEFAULT 0,
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
CONSTRAINT "review_sessions_pkey" PRIMARY KEY ("id")
);
-- CreateIndex
CREATE UNIQUE INDEX "users_email_key" ON "users"("email");
-- CreateIndex
CREATE UNIQUE INDEX "accounts_provider_providerAccountId_key" ON "accounts"("provider", "providerAccountId");
-- CreateIndex
CREATE UNIQUE INDEX "sessions_sessionToken_key" ON "sessions"("sessionToken");
-- CreateIndex
CREATE UNIQUE INDEX "verification_tokens_token_key" ON "verification_tokens"("token");
-- CreateIndex
CREATE UNIQUE INDEX "verification_tokens_identifier_token_key" ON "verification_tokens"("identifier", "token");
-- CreateIndex
CREATE UNIQUE INDEX "clients_email_key" ON "clients"("email");
-- CreateIndex
CREATE UNIQUE INDEX "client_access_userId_clientId_key" ON "client_access"("userId", "clientId");
-- CreateIndex
CREATE UNIQUE INDEX "projects_code_key" ON "projects"("code");
-- CreateIndex
CREATE UNIQUE INDEX "shots_projectId_shotCode_key" ON "shots"("projectId", "shotCode");
-- CreateIndex
CREATE UNIQUE INDEX "versions_shotId_versionNumber_key" ON "versions"("shotId", "versionNumber");
-- CreateIndex
CREATE UNIQUE INDEX "review_sessions_token_key" ON "review_sessions"("token");
-- AddForeignKey
ALTER TABLE "accounts" ADD CONSTRAINT "accounts_userId_fkey" FOREIGN KEY ("userId") REFERENCES "users"("id") ON DELETE CASCADE ON UPDATE CASCADE;
-- AddForeignKey
ALTER TABLE "sessions" ADD CONSTRAINT "sessions_userId_fkey" FOREIGN KEY ("userId") REFERENCES "users"("id") ON DELETE CASCADE ON UPDATE CASCADE;
-- AddForeignKey
ALTER TABLE "client_access" ADD CONSTRAINT "client_access_userId_fkey" FOREIGN KEY ("userId") REFERENCES "users"("id") ON DELETE CASCADE ON UPDATE CASCADE;
-- AddForeignKey
ALTER TABLE "client_access" ADD CONSTRAINT "client_access_clientId_fkey" FOREIGN KEY ("clientId") REFERENCES "clients"("id") ON DELETE CASCADE ON UPDATE CASCADE;
-- AddForeignKey
ALTER TABLE "projects" ADD CONSTRAINT "projects_clientId_fkey" FOREIGN KEY ("clientId") REFERENCES "clients"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
-- AddForeignKey
ALTER TABLE "projects" ADD CONSTRAINT "projects_producerId_fkey" FOREIGN KEY ("producerId") REFERENCES "users"("id") ON DELETE SET NULL ON UPDATE CASCADE;
-- AddForeignKey
ALTER TABLE "projects" ADD CONSTRAINT "projects_supervisorId_fkey" FOREIGN KEY ("supervisorId") REFERENCES "users"("id") ON DELETE SET NULL ON UPDATE CASCADE;
-- AddForeignKey
ALTER TABLE "shots" ADD CONSTRAINT "shots_projectId_fkey" FOREIGN KEY ("projectId") REFERENCES "projects"("id") ON DELETE CASCADE ON UPDATE CASCADE;
-- AddForeignKey
ALTER TABLE "shots" ADD CONSTRAINT "shots_artistId_fkey" FOREIGN KEY ("artistId") REFERENCES "users"("id") ON DELETE SET NULL ON UPDATE CASCADE;
-- AddForeignKey
ALTER TABLE "versions" ADD CONSTRAINT "versions_shotId_fkey" FOREIGN KEY ("shotId") REFERENCES "shots"("id") ON DELETE CASCADE ON UPDATE CASCADE;
-- AddForeignKey
ALTER TABLE "versions" ADD CONSTRAINT "versions_artistId_fkey" FOREIGN KEY ("artistId") REFERENCES "users"("id") ON DELETE SET NULL ON UPDATE CASCADE;
-- AddForeignKey
ALTER TABLE "comments" ADD CONSTRAINT "comments_versionId_fkey" FOREIGN KEY ("versionId") REFERENCES "versions"("id") ON DELETE CASCADE ON UPDATE CASCADE;
-- AddForeignKey
ALTER TABLE "comments" ADD CONSTRAINT "comments_authorId_fkey" FOREIGN KEY ("authorId") REFERENCES "users"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
-- AddForeignKey
ALTER TABLE "comment_replies" ADD CONSTRAINT "comment_replies_commentId_fkey" FOREIGN KEY ("commentId") REFERENCES "comments"("id") ON DELETE CASCADE ON UPDATE CASCADE;
-- AddForeignKey
ALTER TABLE "comment_replies" ADD CONSTRAINT "comment_replies_authorId_fkey" FOREIGN KEY ("authorId") REFERENCES "users"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
-- AddForeignKey
ALTER TABLE "annotations" ADD CONSTRAINT "annotations_versionId_fkey" FOREIGN KEY ("versionId") REFERENCES "versions"("id") ON DELETE CASCADE ON UPDATE CASCADE;
-- AddForeignKey
ALTER TABLE "annotations" ADD CONSTRAINT "annotations_commentId_fkey" FOREIGN KEY ("commentId") REFERENCES "comments"("id") ON DELETE SET NULL ON UPDATE CASCADE;
-- AddForeignKey
ALTER TABLE "annotations" ADD CONSTRAINT "annotations_authorId_fkey" FOREIGN KEY ("authorId") REFERENCES "users"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
-- AddForeignKey
ALTER TABLE "approvals" ADD CONSTRAINT "approvals_versionId_fkey" FOREIGN KEY ("versionId") REFERENCES "versions"("id") ON DELETE CASCADE ON UPDATE CASCADE;
-- AddForeignKey
ALTER TABLE "approvals" ADD CONSTRAINT "approvals_userId_fkey" FOREIGN KEY ("userId") REFERENCES "users"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
-- AddForeignKey
ALTER TABLE "notifications" ADD CONSTRAINT "notifications_userId_fkey" FOREIGN KEY ("userId") REFERENCES "users"("id") ON DELETE CASCADE ON UPDATE CASCADE;
-- AddForeignKey
ALTER TABLE "review_sessions" ADD CONSTRAINT "review_sessions_projectId_fkey" FOREIGN KEY ("projectId") REFERENCES "projects"("id") ON DELETE CASCADE ON UPDATE CASCADE;
@@ -0,0 +1,107 @@
-- CreateEnum
CREATE TYPE "TaskStatus" AS ENUM ('TODO', 'IN_PROGRESS', 'INTERNAL_REVIEW', 'CLIENT_REVIEW', 'CHANGES', 'DONE');
-- CreateEnum
CREATE TYPE "TaskType" AS ENUM ('TRACK', 'ROTO', 'KEY', 'COMP', 'FX', 'LIGHTING', 'RENDER', 'ANIMATION', 'MODEL', 'TEXTURE', 'RIG', 'LOOKDEV', 'GENERAL');
-- AlterEnum
-- This migration adds more than one value to an enum.
-- With PostgreSQL versions 11 and earlier, this is not possible
-- in a single migration. This can be worked around by creating
-- multiple migrations, each migration adding only one value to
-- the enum.
ALTER TYPE "NotificationType" ADD VALUE 'TASK_ASSIGNED';
ALTER TYPE "NotificationType" ADD VALUE 'TASK_OVERDUE';
ALTER TYPE "NotificationType" ADD VALUE 'TASK_APPROVED';
ALTER TYPE "NotificationType" ADD VALUE 'TASK_CHANGES_REQUESTED';
ALTER TYPE "NotificationType" ADD VALUE 'TASK_READY_FOR_REVIEW';
-- DropForeignKey
ALTER TABLE "projects" DROP CONSTRAINT "projects_clientId_fkey";
-- DropIndex
DROP INDEX "versions_shotId_versionNumber_key";
-- AlterTable
ALTER TABLE "projects" ALTER COLUMN "clientId" DROP NOT NULL;
-- AlterTable
ALTER TABLE "versions" ADD COLUMN "isClientVisible" BOOLEAN NOT NULL DEFAULT false,
ADD COLUMN "sharedAt" TIMESTAMP(3),
ADD COLUMN "sharedById" TEXT,
ADD COLUMN "taskId" TEXT,
ALTER COLUMN "shotId" DROP NOT NULL;
-- CreateTable
CREATE TABLE "assets" (
"id" TEXT NOT NULL,
"projectId" TEXT NOT NULL,
"assetCode" TEXT NOT NULL,
"name" TEXT NOT NULL,
"description" TEXT,
"status" "ShotStatus" NOT NULL DEFAULT 'WAITING',
"priority" "ShotPriority" NOT NULL DEFAULT 'NORMAL',
"leadId" TEXT,
"dueDate" TIMESTAMP(3),
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
"updatedAt" TIMESTAMP(3) NOT NULL,
CONSTRAINT "assets_pkey" PRIMARY KEY ("id")
);
-- CreateTable
CREATE TABLE "tasks" (
"id" TEXT NOT NULL,
"title" TEXT NOT NULL,
"description" TEXT,
"type" "TaskType" NOT NULL DEFAULT 'GENERAL',
"status" "TaskStatus" NOT NULL DEFAULT 'TODO',
"priority" "ShotPriority" NOT NULL DEFAULT 'NORMAL',
"dueDate" TIMESTAMP(3),
"estimatedHours" DOUBLE PRECISION,
"sortOrder" INTEGER NOT NULL DEFAULT 0,
"shotId" TEXT,
"assetId" TEXT,
"assignedArtistId" TEXT,
"createdById" TEXT NOT NULL,
"projectId" TEXT NOT NULL,
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
"updatedAt" TIMESTAMP(3) NOT NULL,
CONSTRAINT "tasks_pkey" PRIMARY KEY ("id")
);
-- CreateIndex
CREATE UNIQUE INDEX "assets_projectId_assetCode_key" ON "assets"("projectId", "assetCode");
-- AddForeignKey
ALTER TABLE "projects" ADD CONSTRAINT "projects_clientId_fkey" FOREIGN KEY ("clientId") REFERENCES "clients"("id") ON DELETE SET NULL ON UPDATE CASCADE;
-- AddForeignKey
ALTER TABLE "versions" ADD CONSTRAINT "versions_taskId_fkey" FOREIGN KEY ("taskId") REFERENCES "tasks"("id") ON DELETE CASCADE ON UPDATE CASCADE;
-- AddForeignKey
ALTER TABLE "versions" ADD CONSTRAINT "versions_sharedById_fkey" FOREIGN KEY ("sharedById") REFERENCES "users"("id") ON DELETE SET NULL ON UPDATE CASCADE;
-- AddForeignKey
ALTER TABLE "assets" ADD CONSTRAINT "assets_projectId_fkey" FOREIGN KEY ("projectId") REFERENCES "projects"("id") ON DELETE CASCADE ON UPDATE CASCADE;
-- AddForeignKey
ALTER TABLE "assets" ADD CONSTRAINT "assets_leadId_fkey" FOREIGN KEY ("leadId") REFERENCES "users"("id") ON DELETE SET NULL ON UPDATE CASCADE;
-- AddForeignKey
ALTER TABLE "tasks" ADD CONSTRAINT "tasks_shotId_fkey" FOREIGN KEY ("shotId") REFERENCES "shots"("id") ON DELETE CASCADE ON UPDATE CASCADE;
-- AddForeignKey
ALTER TABLE "tasks" ADD CONSTRAINT "tasks_assetId_fkey" FOREIGN KEY ("assetId") REFERENCES "assets"("id") ON DELETE CASCADE ON UPDATE CASCADE;
-- AddForeignKey
ALTER TABLE "tasks" ADD CONSTRAINT "tasks_assignedArtistId_fkey" FOREIGN KEY ("assignedArtistId") REFERENCES "users"("id") ON DELETE SET NULL ON UPDATE CASCADE;
-- AddForeignKey
ALTER TABLE "tasks" ADD CONSTRAINT "tasks_createdById_fkey" FOREIGN KEY ("createdById") REFERENCES "users"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
-- AddForeignKey
ALTER TABLE "tasks" ADD CONSTRAINT "tasks_projectId_fkey" FOREIGN KEY ("projectId") REFERENCES "projects"("id") ON DELETE CASCADE ON UPDATE CASCADE;
@@ -0,0 +1,29 @@
-- Migration: Task-First Workflow Refactor
-- 1. Delete old shot-based versions (versions linked to shots, not tasks)
DELETE FROM "versions" WHERE "shotId" IS NOT NULL AND "taskId" IS NULL;
-- 2. Drop defaults before type changes (they hold a reference to the enum)
ALTER TABLE "shots" ALTER COLUMN "status" DROP DEFAULT;
ALTER TABLE "assets" ALTER COLUMN "status" DROP DEFAULT;
-- 3. Cast status columns to text so we can rename values
ALTER TABLE "shots" ALTER COLUMN "status" TYPE TEXT;
ALTER TABLE "assets" ALTER COLUMN "status" TYPE TEXT;
-- 4. Rename old enum values in the data
UPDATE "shots" SET "status" = 'IN_REVIEW' WHERE "status" IN ('INTERNAL_REVIEW', 'CLIENT_REVIEW');
UPDATE "shots" SET "status" = 'COMPLETE' WHERE "status" IN ('APPROVED', 'FINAL');
UPDATE "assets" SET "status" = 'IN_REVIEW' WHERE "status" IN ('INTERNAL_REVIEW', 'CLIENT_REVIEW');
UPDATE "assets" SET "status" = 'COMPLETE' WHERE "status" IN ('APPROVED', 'FINAL');
-- 5. Drop old enum type (no dependents remain)
DROP TYPE "ShotStatus";
-- 6. Create new enum type with 5 values
CREATE TYPE "ShotStatus" AS ENUM ('WAITING', 'IN_PROGRESS', 'IN_REVIEW', 'REVISIONS', 'COMPLETE');
-- 7. Convert columns back to the new enum and restore defaults
ALTER TABLE "shots" ALTER COLUMN "status" TYPE "ShotStatus" USING "status"::"ShotStatus";
ALTER TABLE "shots" ALTER COLUMN "status" SET DEFAULT 'WAITING';
ALTER TABLE "assets" ALTER COLUMN "status" TYPE "ShotStatus" USING "status"::"ShotStatus";
ALTER TABLE "assets" ALTER COLUMN "status" SET DEFAULT 'WAITING';
@@ -0,0 +1,11 @@
-- CreateEnum
CREATE TYPE "ProjectType" AS ENUM ('STANDARD', 'EPISODIC');
-- AlterTable projects: add showId and projectType
ALTER TABLE "projects" ADD COLUMN "showId" TEXT NOT NULL DEFAULT '';
ALTER TABLE "projects" ADD COLUMN "projectType" "ProjectType" NOT NULL DEFAULT 'STANDARD';
-- AlterTable shots: add scene, episode, shotNumber
ALTER TABLE "shots" ADD COLUMN "scene" TEXT NOT NULL DEFAULT '';
ALTER TABLE "shots" ADD COLUMN "episode" TEXT;
ALTER TABLE "shots" ADD COLUMN "shotNumber" INTEGER NOT NULL DEFAULT 0;
@@ -0,0 +1,2 @@
-- AlterTable
ALTER TABLE "shots" ADD COLUMN "thumbnailUrl" TEXT;
@@ -0,0 +1,2 @@
-- AlterTable
ALTER TABLE "users" ADD COLUMN "mustChangePassword" BOOLEAN NOT NULL DEFAULT false;
@@ -0,0 +1,44 @@
-- DropForeignKey
ALTER TABLE "annotations" DROP CONSTRAINT "annotations_authorId_fkey";
-- DropForeignKey
ALTER TABLE "approvals" DROP CONSTRAINT "approvals_userId_fkey";
-- DropForeignKey
ALTER TABLE "comment_replies" DROP CONSTRAINT "comment_replies_authorId_fkey";
-- DropForeignKey
ALTER TABLE "comments" DROP CONSTRAINT "comments_authorId_fkey";
-- DropForeignKey
ALTER TABLE "tasks" DROP CONSTRAINT "tasks_createdById_fkey";
-- AlterTable
ALTER TABLE "annotations" ALTER COLUMN "authorId" DROP NOT NULL;
-- AlterTable
ALTER TABLE "approvals" ALTER COLUMN "userId" DROP NOT NULL;
-- AlterTable
ALTER TABLE "comment_replies" ALTER COLUMN "authorId" DROP NOT NULL;
-- AlterTable
ALTER TABLE "comments" ALTER COLUMN "authorId" DROP NOT NULL;
-- AlterTable
ALTER TABLE "tasks" ALTER COLUMN "createdById" DROP NOT NULL;
-- AddForeignKey
ALTER TABLE "comments" ADD CONSTRAINT "comments_authorId_fkey" FOREIGN KEY ("authorId") REFERENCES "users"("id") ON DELETE SET NULL ON UPDATE CASCADE;
-- AddForeignKey
ALTER TABLE "comment_replies" ADD CONSTRAINT "comment_replies_authorId_fkey" FOREIGN KEY ("authorId") REFERENCES "users"("id") ON DELETE SET NULL ON UPDATE CASCADE;
-- AddForeignKey
ALTER TABLE "annotations" ADD CONSTRAINT "annotations_authorId_fkey" FOREIGN KEY ("authorId") REFERENCES "users"("id") ON DELETE SET NULL ON UPDATE CASCADE;
-- AddForeignKey
ALTER TABLE "approvals" ADD CONSTRAINT "approvals_userId_fkey" FOREIGN KEY ("userId") REFERENCES "users"("id") ON DELETE SET NULL ON UPDATE CASCADE;
-- AddForeignKey
ALTER TABLE "tasks" ADD CONSTRAINT "tasks_createdById_fkey" FOREIGN KEY ("createdById") REFERENCES "users"("id") ON DELETE SET NULL ON UPDATE CASCADE;
@@ -0,0 +1,10 @@
-- AlterTable
ALTER TABLE "tasks" ADD COLUMN "scheduleNotes" TEXT,
ADD COLUMN "scheduledEndDate" TIMESTAMP(3),
ADD COLUMN "scheduledStartDate" TIMESTAMP(3);
-- CreateIndex
CREATE INDEX "tasks_scheduledStartDate_idx" ON "tasks"("scheduledStartDate");
-- CreateIndex
CREATE INDEX "tasks_scheduledEndDate_idx" ON "tasks"("scheduledEndDate");
+3
View File
@@ -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"