Files
tautkan-kanban/server/prisma/schema.sqlite.prisma
T

75 lines
2.3 KiB
Plaintext

// Prisma schema for Local Development (SQLite)
datasource db {
provider = "sqlite"
url = env("DATABASE_URL")
}
generator client {
provider = "prisma-client-js"
}
model Board {
id String @id @default(uuid())
title String @default("Agile Kanban Board")
adminKeyHash String
memberKeyHash String
memberKey String? @default("")
autoMoveStale Boolean @default(false)
createdAt DateTime @default(now())
updatedAt DateTime @updatedAt
columns Column[]
activityLogs ActivityLog[]
}
model Column {
id String @id @default(uuid())
boardId String
board Board @relation(fields: [boardId], references: [id], onDelete: Cascade)
title String
order Int @default(0)
maxWipLimit Int @default(0)
autoStaleHours Int @default(0)
createdAt DateTime @default(now())
updatedAt DateTime @updatedAt
tickets Ticket[]
}
model Ticket {
id String @id @default(uuid())
columnId String
column Column @relation(fields: [columnId], references: [id], onDelete: Cascade)
title String
description String @default("")
order Int @default(0)
priority String @default("MEDIUM")
tags String @default("[]")
subtasks String @default("[]")
dueDate String? @default("")
isBlocked Boolean @default(false)
blockedReason String? @default("")
assignee String? @default("")
movedAt DateTime @default(now())
createdAt DateTime @default(now())
updatedAt DateTime @updatedAt
activityLogs ActivityLog[]
}
model ActivityLog {
id String @id @default(uuid())
boardId String
board Board @relation(fields: [boardId], references: [id], onDelete: Cascade)
ticketId String?
ticket Ticket? @relation(fields: [ticketId], references: [id], onDelete: Cascade)
ticketTitle String @default("")
action String @default("MOVED") // MOVED, CREATED, BLOCKED, UNBLOCKED, DELETED
fromColumnTitle String? @default("")
toColumnTitle String? @default("")
userName String @default("User")
details String? @default("")
createdAt DateTime @default(now())
}