generator client { provider = "prisma-client-js" output = "../../src/generated/platform" } datasource db { provider = "mysql" url = env("DATABASE_URL") } enum TenantStatus { ACTIVE SUSPENDED } model Tenant { id String @id @default(uuid()) name String slug String @unique database String @unique status TenantStatus @default(ACTIVE) createdAt DateTime @default(now()) updatedAt DateTime @updatedAt } model PlatformUser { id String @id @default(uuid()) name String email String @unique passwordHash String googleId String? @unique githubId String? @unique totpSecret String? totpEnabled Boolean @default(false) lastLoginAt DateTime? createdAt DateTime @default(now()) updatedAt DateTime @updatedAt refreshTokens PlatformRefreshToken[] auditLogs PlatformAuditLog[] } model PlatformRefreshToken { id String @id @default(uuid()) userId String user PlatformUser @relation(fields: [userId], references: [id], onDelete: Cascade) hashed String expiresAt DateTime revokedAt DateTime? createdAt DateTime @default(now()) @@index([userId]) } model PlatformAuditLog { id String @id @default(uuid()) userId String? user PlatformUser? @relation(fields: [userId], references: [id], onDelete: SetNull) action String entity String? entityId String? ip String? metadata Json? createdAt DateTime @default(now()) @@index([createdAt]) }