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()) }