Files
ai/backend/prisma/schema.prisma
2025-07-08 00:52:10 +08:00

99 lines
2.2 KiB
Plaintext

// 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
firstName String?
lastName 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")
}