From ccf892e4794789a43d1ff9f04f67e47000da9234 Mon Sep 17 00:00:00 2001 From: EENE Dashboard Date: Fri, 5 Jun 2026 22:34:48 +0900 Subject: [PATCH] fix: sync production DB schema on every server start Co-authored-by: Cursor --- backend/package.json | 7 ++++--- .../migration.sql | 16 ++++++++++++---- 2 files changed, 16 insertions(+), 7 deletions(-) diff --git a/backend/package.json b/backend/package.json index 0c8d063..839a5d5 100644 --- a/backend/package.json +++ b/backend/package.json @@ -5,8 +5,9 @@ "main": "dist/index.js", "scripts": { "dev": "tsx watch src/index.ts", - "build": "tsc", - "start": "node dist/index.js", + "db:sync": "prisma migrate deploy || prisma db push", + "build": "prisma generate && tsc", + "start": "npm run db:sync && node dist/index.js", "db:migrate": "prisma migrate dev", "db:generate": "prisma generate", "db:studio": "prisma studio", @@ -23,6 +24,7 @@ "jsonwebtoken": "^9.0.2", "morgan": "^1.10.0", "multer": "^1.4.5-lts.1", + "prisma": "^6.0.0", "socket.io": "^4.8.0", "uuid": "^10.0.0" }, @@ -35,7 +37,6 @@ "@types/multer": "^1.4.12", "@types/node": "^22.0.0", "@types/uuid": "^10.0.0", - "prisma": "^6.0.0", "tsx": "^4.19.0", "typescript": "^5.6.0" } diff --git a/backend/prisma/migrations/20260605120000_milestone_stage_fields/migration.sql b/backend/prisma/migrations/20260605120000_milestone_stage_fields/migration.sql index aca493a..b8ea8a2 100644 --- a/backend/prisma/migrations/20260605120000_milestone_stage_fields/migration.sql +++ b/backend/prisma/migrations/20260605120000_milestone_stage_fields/migration.sql @@ -5,11 +5,19 @@ ALTER TABLE "milestones" ADD COLUMN IF NOT EXISTS "links" TEXT; -- AlterTable ALTER TABLE "files" ADD COLUMN IF NOT EXISTS "milestoneId" TEXT; CREATE INDEX IF NOT EXISTS "files_milestoneId_idx" ON "files"("milestoneId"); -ALTER TABLE "files" ADD CONSTRAINT "files_milestoneId_fkey" - FOREIGN KEY ("milestoneId") REFERENCES "milestones"("id") ON DELETE SET NULL ON UPDATE CASCADE; +DO $$ BEGIN + ALTER TABLE "files" ADD CONSTRAINT "files_milestoneId_fkey" + FOREIGN KEY ("milestoneId") REFERENCES "milestones"("id") ON DELETE SET NULL ON UPDATE CASCADE; +EXCEPTION + WHEN duplicate_object THEN NULL; +END $$; -- AlterTable ALTER TABLE "task_details" ADD COLUMN IF NOT EXISTS "milestoneId" TEXT; CREATE INDEX IF NOT EXISTS "task_details_milestoneId_idx" ON "task_details"("milestoneId"); -ALTER TABLE "task_details" ADD CONSTRAINT "task_details_milestoneId_fkey" - FOREIGN KEY ("milestoneId") REFERENCES "milestones"("id") ON DELETE CASCADE ON UPDATE CASCADE; +DO $$ BEGIN + ALTER TABLE "task_details" ADD CONSTRAINT "task_details_milestoneId_fkey" + FOREIGN KEY ("milestoneId") REFERENCES "milestones"("id") ON DELETE CASCADE ON UPDATE CASCADE; +EXCEPTION + WHEN duplicate_object THEN NULL; +END $$;