From fa34f680b368027371903dc573aa8901ca1d76bc Mon Sep 17 00:00:00 2001 From: Madhura68 Date: Sun, 26 Apr 2026 16:03:29 +0200 Subject: [PATCH] feat(ST-350): add Story.assignee_id schema migration Co-Authored-By: Claude Sonnet 4.6 --- .../migration.sql | 1 + .../migration.sql | 8 +++++ prisma/schema.prisma | 33 +++++++++++-------- 3 files changed, 28 insertions(+), 14 deletions(-) create mode 100644 prisma/migrations/20260425210710_add_review_task_status/migration.sql create mode 100644 prisma/migrations/20260426140229_add_story_assignee/migration.sql diff --git a/prisma/migrations/20260425210710_add_review_task_status/migration.sql b/prisma/migrations/20260425210710_add_review_task_status/migration.sql new file mode 100644 index 0000000..55ccf81 --- /dev/null +++ b/prisma/migrations/20260425210710_add_review_task_status/migration.sql @@ -0,0 +1 @@ +ALTER TYPE "TaskStatus" ADD VALUE 'REVIEW'; diff --git a/prisma/migrations/20260426140229_add_story_assignee/migration.sql b/prisma/migrations/20260426140229_add_story_assignee/migration.sql new file mode 100644 index 0000000..c9feb7f --- /dev/null +++ b/prisma/migrations/20260426140229_add_story_assignee/migration.sql @@ -0,0 +1,8 @@ +-- AlterTable +ALTER TABLE "stories" ADD COLUMN "assignee_id" TEXT; + +-- CreateIndex +CREATE INDEX "stories_sprint_id_assignee_id_idx" ON "stories"("sprint_id", "assignee_id"); + +-- AddForeignKey +ALTER TABLE "stories" ADD CONSTRAINT "stories_assignee_id_fkey" FOREIGN KEY ("assignee_id") REFERENCES "users"("id") ON DELETE SET NULL ON UPDATE CASCADE; diff --git a/prisma/schema.prisma b/prisma/schema.prisma index c258da6..5a82a0a 100644 --- a/prisma/schema.prisma +++ b/prisma/schema.prisma @@ -26,6 +26,7 @@ enum StoryStatus { enum TaskStatus { TO_DO IN_PROGRESS + REVIEW DONE } @@ -46,20 +47,21 @@ enum SprintStatus { } model User { - id String @id @default(cuid()) - username String @unique - password_hash String - is_demo Boolean @default(false) - bio String? @db.VarChar(160) - bio_detail String? @db.VarChar(2000) - avatar_data Bytes? - created_at DateTime @default(now()) - updated_at DateTime @updatedAt - roles UserRole[] - api_tokens ApiToken[] - products Product[] - todos Todo[] - product_members ProductMember[] + id String @id @default(cuid()) + username String @unique + password_hash String + is_demo Boolean @default(false) + bio String? @db.VarChar(160) + bio_detail String? @db.VarChar(2000) + avatar_data Bytes? + created_at DateTime @default(now()) + updated_at DateTime @updatedAt + roles UserRole[] + api_tokens ApiToken[] + products Product[] + todos Todo[] + product_members ProductMember[] + assigned_stories Story[] @relation("StoryAssignee") @@map("users") } @@ -133,6 +135,8 @@ model Story { product_id String sprint Sprint? @relation(fields: [sprint_id], references: [id]) sprint_id String? + assignee User? @relation("StoryAssignee", fields: [assignee_id], references: [id], onDelete: SetNull) + assignee_id String? title String description String? acceptance_criteria String? @@ -147,6 +151,7 @@ model Story { @@index([pbi_id, priority, sort_order]) @@index([sprint_id, sort_order]) @@index([product_id, status]) + @@index([sprint_id, assignee_id]) @@map("stories") }