// This is your Prisma schema file, // learn more about it in the docs: https://pris.ly/d/prisma-schema // Looking for ways to speed up your queries, or scale easily with your serverless or edge functions? // Try Prisma Accelerate: https://pris.ly/cli/accelerate-init generator client { provider = "prisma-client-js" output = "../src/generated/prisma" } datasource db { provider = "postgresql" url = env("DATABASE_URL") } model User { id String @id @default(cuid()) email String @unique name String? role Role @default(ADMIN) createdAt DateTime @default(now()) } enum Role { ADMIN ARTIST } model CommissionType { id String @id @default(cuid()) title String description String? basePrice Float deliveryEst String? // e.g. "2 weeks" tags String[] // e.g. shaded, sketch, full-body active Boolean @default(true) createdAt DateTime @default(now()) CommissionRequest CommissionRequest[] } model CommissionRequest { id String @id @default(cuid()) name String email String message String typeId String status RequestStatus @default(PENDING) createdAt DateTime @default(now()) type CommissionType @relation(fields: [typeId], references: [id]) } enum RequestStatus { PENDING ACCEPTED IN_PROGRESS DONE REJECTED } model Artwork { id String @id @default(cuid()) title String imageUrl String description String? tags String[] formats String[] isPublic Boolean @default(true) groupId String? createdAt DateTime @default(now()) group PresentationGroup? @relation(fields: [groupId], references: [id]) } model PresentationGroup { id String @id @default(cuid()) name String description String? createdAt DateTime @default(now()) Artwork Artwork[] } model Preferences { id String @id @default(cuid()) commissionOpen Boolean @default(true) defaultDelivery String? // e.g. "7 days" autoReplyMessage String? notifyByEmail Boolean @default(true) } model TOS { id String @id @default(cuid()) content String // Markdown or rich text createdAt DateTime @default(now()) }