generator client { provider = "prisma-client-js" } datasource db { provider = "postgresql" url = env("DATABASE_URL") } model User { id String @id @default(cuid()) email String @unique createdAt DateTime @default(now()) updatedAt DateTime @updatedAt sessions Session[] draft RuleDraft? rules PublishedRule[] } model Session { id String @id @default(cuid()) userId String user User @relation(fields: [userId], references: [id], onDelete: Cascade) tokenHash String @unique expiresAt DateTime createdAt DateTime @default(now()) @@index([userId]) } model OtpChallenge { id String @id @default(cuid()) email String codeHash String expiresAt DateTime attempts Int @default(0) createdAt DateTime @default(now()) @@index([email]) } model RuleDraft { id String @id @default(cuid()) userId String @unique user User @relation(fields: [userId], references: [id], onDelete: Cascade) payload Json updatedAt DateTime @updatedAt } model PublishedRule { id String @id @default(cuid()) userId String? user User? @relation(fields: [userId], references: [id], onDelete: SetNull) title String summary String? document Json createdAt DateTime @default(now()) updatedAt DateTime @updatedAt @@index([userId]) } model RuleTemplate { id String @id @default(cuid()) slug String @unique title String category String? description String? body Json sortOrder Int @default(0) featured Boolean @default(false) }