// Templates2 Base — core data model shared by every case. // SQLite in development (file:./dev.db); switch the datasource url to Postgres in production. generator client { provider = "prisma-client-js" } datasource db { provider = "sqlite" url = env("DATABASE_URL") } model User { id String @id @default(cuid()) email String @unique passwordHash String name String? role String @default("user") // user | admin createdAt DateTime @default(now()) sessions Session[] subscription Subscription? auditLogs AuditLog[] } model Session { id String @id @default(cuid()) token String @unique userId String user User @relation(fields: [userId], references: [id], onDelete: Cascade) expiresAt DateTime createdAt DateTime @default(now()) @@index([userId]) } model Subscription { id String @id @default(cuid()) userId String @unique user User @relation(fields: [userId], references: [id], onDelete: Cascade) plan String @default("free") // free | pro status String @default("active") // active | canceled | past_due provider String @default("mock") // mock | stripe currentPeriodEnd DateTime? createdAt DateTime @default(now()) updatedAt DateTime @updatedAt } model AuditLog { id String @id @default(cuid()) actorId String? actor User? @relation(fields: [actorId], references: [id], onDelete: SetNull) action String target String? meta String? createdAt DateTime @default(now()) @@index([actorId]) }