Files
AthenaBE/prisma/schema.prisma
T
2025-11-02 10:05:02 +01:00

103 lines
2.5 KiB
Plaintext

generator client {
provider = "prisma-client-js"
}
datasource db {
provider = "postgresql"
url = env("DATABASE_URL")
}
model User {
id String @id @default(uuid())
firstName String
middleName String?
lastName String
email String @unique
phoneNumber String?
department String?
password String
riskStatus RiskStatus
imageUrl String?
title String
isLocked Boolean @default(false)
isActivated Boolean @default(false)
role Role
managerId String?
comments Comment[]
PasswordResetToken PasswordResetToken[]
createdTodos Todo[] @relation("CreatedTodos")
manager User? @relation("ManagerMembers", fields: [managerId], references: [id])
teamMembers User[] @relation("ManagerMembers")
assignedTodos Todo[] @relation("AssignedTodos")
securityType SecurityType @default(BASIC)
}
model Todo {
id String @id @default(cuid())
title String
task String
status TodoStatus
priority PriorityStatus
dueDate DateTime
createdAt DateTime @default(now())
createdById String
comments Comment[]
createdBy User @relation("CreatedTodos", fields: [createdById], references: [id])
assignees User[] @relation("AssignedTodos")
}
model Comment {
id String @id @default(cuid())
content String
createdAt DateTime @default(now())
todoId String
userId String
todo Todo @relation(fields: [todoId], references: [id], onDelete: Cascade)
user User @relation(fields: [userId], references: [id], onDelete: Cascade)
}
model PasswordResetToken {
id String @id @default(cuid())
userId String
tokenHash String @unique
expiresAt DateTime
usedAt DateTime?
createdAt DateTime @default(now())
user User @relation(fields: [userId], references: [id], onDelete: Cascade)
@@index([userId])
@@index([expiresAt])
}
enum TodoStatus {
NEW
IN_PROGRESS
COMPLETED
ARCHIVED
}
enum Role {
MANAGER
ADMIN
USER
}
enum RiskStatus {
LOW_RISK
MODERATE_RISK
HIGH_RISK
NO_RISK
}
enum PriorityStatus {
LOW_PRIORITY
MODERATE_PRIORITY
HIGH_PRIORITY
}
enum SecurityType {
BASIC
ASSISTANCE
MAXIMUM
}