// This is your Prisma schema file, // learn more about it in the docs: https://pris.ly/d/prisma-schema generator client { provider = "prisma-client-js" } datasource db { provider = "sqlite" url = env("DATABASE_URL") } model User { id String @id @default(cuid()) username String @unique password String isActive Boolean @default(true) isAdmin Boolean @default(false) lastLoginAt DateTime? loginAttempts Int @default(0) lockedUntil DateTime? createdAt DateTime @default(now()) updatedAt DateTime @updatedAt // Relations sessions Session[] auditLogs AuditLog[] accountAssignments AccountAssignment[] @@map("users") } model WebsiteAccount { id String @id @default(cuid()) website String accountName String token String isActive Boolean @default(true) maxUsers Int @default(1) currentUsers Int @default(0) createdAt DateTime @default(now()) updatedAt DateTime @updatedAt // Relations accountAssignments AccountAssignment[] @@unique([website, accountName]) @@map("website_accounts") } model AccountAssignment { id String @id @default(cuid()) userId String accountId String assignedAt DateTime @default(now()) expiresAt DateTime? isActive Boolean @default(true) // Relations user User @relation(fields: [userId], references: [id], onDelete: Cascade) account WebsiteAccount @relation(fields: [accountId], references: [id], onDelete: Cascade) @@unique([userId, accountId]) @@map("account_assignments") } model Session { id String @id @default(cuid()) userId String token String @unique ipAddress String? userAgent String? expiresAt DateTime createdAt DateTime @default(now()) // Relations user User @relation(fields: [userId], references: [id], onDelete: Cascade) @@map("sessions") } model AuditLog { id String @id @default(cuid()) userId String? action String resource String? resourceId String? details String? // JSON string ipAddress String? userAgent String? createdAt DateTime @default(now()) // Relations user User? @relation(fields: [userId], references: [id], onDelete: SetNull) @@map("audit_logs") }