Files
2026-05-19 18:44:42 +02:00

133 lines
3.1 KiB
Plaintext

generator client {
provider = "prisma-client-js"
}
model LoginActivity {
id String @id @default(cuid())
userId String
createdAt DateTime @default(now())
activity String
user User @relation(fields: [userId], references: [id], onDelete: Cascade)
status LoginActivityStatus @default(SUCCESS)
failureReason LoginFailureReason?
@@index([userId, createdAt])
@@index([createdAt])
@@index([activity])
}
datasource db {
provider = "postgresql"
}
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)
lastLoginAt DateTime?
loginActivities LoginActivity[]
}
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
}
enum LoginActivityStatus {
SUCCESS
FAILURE
}
enum LoginFailureReason {
MISSING_CREDENTIALS
INVALID_CREDENTIALS
WRONG_PASSWORD
ACCOUNT_LOCKED
NOT_ACTIVATED
NOT_ALLOWED
UNKNOWN
}