From 715481fbbb7323a06db4bb8d99d6e95c7af25078 Mon Sep 17 00:00:00 2001 From: Jason Woltje Date: Thu, 29 Jan 2026 20:06:45 -0600 Subject: [PATCH] fix(database): add composite unique constraints for workspace isolation --- apps/api/prisma/schema.prisma | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/apps/api/prisma/schema.prisma b/apps/api/prisma/schema.prisma index 2909df0..fad9205 100644 --- a/apps/api/prisma/schema.prisma +++ b/apps/api/prisma/schema.prisma @@ -267,6 +267,7 @@ model Task { subtasks Task[] @relation("TaskSubtasks") domain Domain? @relation(fields: [domainId], references: [id], onDelete: SetNull) + @@unique([id, workspaceId]) @@index([workspaceId]) @@index([workspaceId, status]) @@index([workspaceId, dueDate]) @@ -300,6 +301,7 @@ model Event { project Project? @relation(fields: [projectId], references: [id], onDelete: SetNull) domain Domain? @relation(fields: [domainId], references: [id], onDelete: SetNull) + @@unique([id, workspaceId]) @@index([workspaceId]) @@index([workspaceId, startTime]) @@index([creatorId]) @@ -331,6 +333,7 @@ model Project { domain Domain? @relation(fields: [domainId], references: [id], onDelete: SetNull) ideas Idea[] + @@unique([id, workspaceId]) @@index([workspaceId]) @@index([workspaceId, status]) @@index([creatorId]) @@ -354,6 +357,7 @@ model ActivityLog { workspace Workspace @relation(fields: [workspaceId], references: [id], onDelete: Cascade) user User @relation(fields: [userId], references: [id], onDelete: Cascade) + @@unique([id, workspaceId]) @@index([workspaceId]) @@index([workspaceId, createdAt]) @@index([entityType, entityId]) @@ -408,6 +412,7 @@ model Domain { projects Project[] ideas Idea[] + @@unique([id, workspaceId]) @@unique([workspaceId, slug]) @@index([workspaceId]) @@map("domains") @@ -447,6 +452,7 @@ model Idea { project Project? @relation(fields: [projectId], references: [id], onDelete: SetNull) creator User @relation("IdeaCreator", fields: [creatorId], references: [id], onDelete: Cascade) + @@unique([id, workspaceId]) @@index([workspaceId]) @@index([workspaceId, status]) @@index([domainId]) @@ -612,6 +618,7 @@ model UserLayout { workspace Workspace @relation(fields: [workspaceId], references: [id], onDelete: Cascade) user User @relation(fields: [userId], references: [id], onDelete: Cascade) + @@unique([id, workspaceId]) @@unique([workspaceId, userId, name]) @@index([userId]) @@map("user_layouts")