114 lines
2.5 KiB
Plaintext
114 lines
2.5 KiB
Plaintext
// Prisma Schema für Aufgabenplaner
|
|
// Dokumentation: https://pris.ly/d/prisma-schema
|
|
|
|
generator client {
|
|
provider = "prisma-client-js"
|
|
}
|
|
|
|
datasource db {
|
|
provider = "postgresql"
|
|
url = env("DATABASE_URL")
|
|
}
|
|
|
|
// Benutzerrollen im System
|
|
enum Role {
|
|
BEARBEITER
|
|
PFLEGER
|
|
VORGESETZTER
|
|
ADMIN
|
|
}
|
|
|
|
// Aufgaben-Status
|
|
enum TaskStatus {
|
|
UNERLEDIGT
|
|
IN_BEARBEITUNG
|
|
ERLEDIGT
|
|
}
|
|
|
|
// Benutzer-Modell
|
|
model User {
|
|
id String @id @default(cuid())
|
|
email String @unique
|
|
name String
|
|
password String
|
|
role Role @default(BEARBEITER)
|
|
createdAt DateTime @default(now())
|
|
updatedAt DateTime @updatedAt
|
|
|
|
// Relations: Aufgaben die der Benutzer erstellt hat
|
|
createdTasks Task[] @relation("TaskCreator")
|
|
|
|
// Relations: Aufgaben die dem Benutzer zugewiesen sind
|
|
assignedTasks Task[] @relation("TaskAssignee")
|
|
|
|
// Relations: Kommentare des Benutzers
|
|
comments Comment[]
|
|
|
|
@@index([email])
|
|
}
|
|
|
|
// Aufgaben-Modell
|
|
model Task {
|
|
id String @id @default(cuid())
|
|
wo String
|
|
was String @db.Text
|
|
bisWann DateTime
|
|
status TaskStatus @default(UNERLEDIGT)
|
|
beauftragtAm DateTime?
|
|
firmaBeauftragt String?
|
|
createdAt DateTime @default(now())
|
|
updatedAt DateTime @updatedAt
|
|
|
|
// Relations: Ersteller der Aufgabe
|
|
creatorId String
|
|
creator User @relation("TaskCreator", fields: [creatorId], references: [id])
|
|
|
|
// Relations: Zugewiesener Bearbeiter
|
|
assigneeId String?
|
|
assignee User? @relation("TaskAssignee", fields: [assigneeId], references: [id])
|
|
|
|
// Relations: Kommentare zur Aufgabe
|
|
comments Comment[]
|
|
|
|
// Relations: Dateien der Aufgabe
|
|
files File[]
|
|
|
|
@@index([status])
|
|
@@index([bisWann])
|
|
@@index([assigneeId])
|
|
@@index([creatorId])
|
|
}
|
|
|
|
// Kommentar-Modell
|
|
model Comment {
|
|
id String @id @default(cuid())
|
|
content String @db.Text
|
|
createdAt DateTime @default(now())
|
|
|
|
// Relations: Zugehörige Aufgabe
|
|
taskId String
|
|
task Task @relation(fields: [taskId], references: [id], onDelete: Cascade)
|
|
|
|
// Relations: Autor des Kommentars
|
|
authorId String
|
|
author User @relation(fields: [authorId], references: [id])
|
|
|
|
@@index([taskId])
|
|
}
|
|
|
|
// Datei-Modell
|
|
model File {
|
|
id String @id @default(cuid())
|
|
name String
|
|
path String
|
|
mimeType String
|
|
size Int
|
|
createdAt DateTime @default(now())
|
|
|
|
// Relations: Zugehörige Aufgabe
|
|
taskId String
|
|
task Task @relation(fields: [taskId], references: [id], onDelete: Cascade)
|
|
|
|
@@index([taskId])
|
|
}
|