95 lines
2.4 KiB
Plaintext
95 lines
2.4 KiB
Plaintext
generator client {
|
|
provider = "prisma-client-js"
|
|
}
|
|
|
|
datasource db {
|
|
provider = "sqlite"
|
|
url = env("DATABASE_URL")
|
|
}
|
|
|
|
enum Role {
|
|
CITIZEN
|
|
STAFF
|
|
ADMIN
|
|
}
|
|
|
|
enum ApplicationStatus {
|
|
PENDING
|
|
UNDER_REVIEW
|
|
APPROVED
|
|
REJECTED
|
|
PENDING_DOCUMENTS
|
|
COMPLETED
|
|
}
|
|
|
|
model User {
|
|
id String @id @default(cuid())
|
|
email String @unique
|
|
firstName String
|
|
lastName String
|
|
passwordHash String
|
|
role Role @default(CITIZEN)
|
|
failedLoginAttempts Int @default(0)
|
|
lockoutUntil DateTime?
|
|
createdAt DateTime @default(now())
|
|
updatedAt DateTime @updatedAt
|
|
newsArticles NewsArticle[]
|
|
applications Application[]
|
|
auditLogs AuditLog[]
|
|
}
|
|
|
|
model Application {
|
|
id String @id @default(cuid())
|
|
user User @relation(fields: [userId], references: [id])
|
|
userId String
|
|
type String
|
|
status ApplicationStatus @default(PENDING)
|
|
data Json
|
|
createdAt DateTime @default(now())
|
|
updatedAt DateTime @updatedAt
|
|
documents Document[]
|
|
assignments ServiceAssignment[]
|
|
}
|
|
|
|
model Document {
|
|
id String @id @default(cuid())
|
|
application Application @relation(fields: [applicationId], references: [id])
|
|
applicationId String
|
|
filename String
|
|
url String
|
|
status String
|
|
uploadedAt DateTime @default(now())
|
|
}
|
|
|
|
model NewsArticle {
|
|
id String @id @default(cuid())
|
|
title String
|
|
slug String @unique
|
|
content String
|
|
published Boolean @default(false)
|
|
publishedAt DateTime?
|
|
author User? @relation(fields: [authorId], references: [id])
|
|
authorId String?
|
|
createdAt DateTime @default(now())
|
|
updatedAt DateTime @updatedAt
|
|
}
|
|
|
|
model ServiceAssignment {
|
|
id String @id @default(cuid())
|
|
application Application @relation(fields: [applicationId], references: [id])
|
|
applicationId String
|
|
staff User @relation(fields: [staffId], references: [id])
|
|
staffId String
|
|
notes String?
|
|
createdAt DateTime @default(now())
|
|
}
|
|
|
|
model AuditLog {
|
|
id String @id @default(cuid())
|
|
actor User? @relation(fields: [actorId], references: [id])
|
|
actorId String?
|
|
action String
|
|
details Json?
|
|
createdAt DateTime @default(now())
|
|
}
|