generator client { provider = "prisma-client-js" } datasource db { provider = "postgresql" url = env("DATABASE_URL") directUrl = env("DATABASE_URL_UNPOOLED") } enum UserRole { USER ADMIN } model User { id String @id @default(cuid()) name String? email String? @unique emailVerified DateTime? image String? password String? role UserRole @default(USER) accounts Account[] createdAt DateTime @default(now()) subscriptions UserSubscription[] purchases Purchase[] } model Account { id String @id @default(cuid()) userId String type String provider String providerAccountId String refresh_token String? @db.Text access_token String? @db.Text expires_at Int? token_type String? scope String? id_token String? @db.Text session_state String? user User @relation(fields: [userId], references: [id], onDelete: Cascade) @@unique([provider, providerAccountId]) } model VerificationToken { id String @id @default(cuid()) email String token String @unique expires DateTime @@unique([email, token]) } model PasswordResetToken { id String @id @default(cuid()) email String token String @unique expires DateTime @@unique([email, token]) } model UserSubscription { id String @id @default(uuid()) userId String @unique stripeCustomerId String? @unique @map(name: "stripe_customer_id") stripeSubscriptionId String? @unique @map(name: "stripe_subscription_id") stripePriceId String? @unique @map(name: "stripe_price_id") stripeCurrentPeriodEnd DateTime? @unique @map(name: "stripe_current_period_end") user User @relation(fields: [userId], references: [id]) } model Purchase { id String @id @default(uuid()) userId String amount Float createdAt DateTime @default(now()) updatedAt DateTime @updatedAt() user User @relation(fields: [userId], references: [id], onDelete: Cascade) } model StripeCustomer { id String @id @default(uuid()) userId String @unique stripeCustomerId String @unique createdAt DateTime @default(now()) updatedAt DateTime @updatedAt() }