Prisma schema
Model danych, który w produkcji trafia do PostgreSQL przez Prisma ORM. Demo używa uproszczonej pamięci podręcznej.
schema.prisma
PostgreSQL
generator client {
provider = "prisma-client-js"
}
datasource db {
provider = "postgresql"
url = env("DATABASE_URL")
}
model User {
id String @id @default(cuid())
email String @unique
name String?
role Role @default(ORGANIZER)
stripeAccount String? @map("stripe_account_id")
createdAt DateTime @default(now()) @map("created_at")
updatedAt DateTime @updatedAt @map("updated_at")
events Event[]
@@map("users")
}
model Event {
id String @id @default(cuid())
title String
venue String
city String
date DateTime
capacity Int
published Boolean @default(false)
organizerId String @map("organizer_id")
organizer User @relation(fields: [organizerId], references: [id])
tiers Tier[]
orders Order[]
@@map("events")
}
model Tier {
id String @id @default(cuid())
name String
price Int
quantity Int
sold Int @default(0)
eventId String @map("event_id")
event Event @relation(fields: [eventId], references: [id], onDelete: Cascade)
orders Order[]
@@map("tiers")
}
model Order {
id String @id @default(cuid())
buyerName String @map("buyer_name")
buyerEmail String @map("buyer_email")
city String
status OrderStatus @default(PENDING)
price Int
platformFee Int @map("platform_fee")
organizerNet Int @map("organizer_net")
stripePaymentId String? @map("stripe_payment_intent_id")
tierId String @map("tier_id")
eventId String @map("event_id")
tier Tier @relation(fields: [tierId], references: [id])
event Event @relation(fields: [eventId], references: [id])
ticket Ticket?
createdAt DateTime @default(now()) @map("created_at")
@@map("orders")
}
model Ticket {
id String @id @default(cuid())
orderId String @unique @map("order_id")
order Order @relation(fields: [orderId], references: [id])
qrCode String @map("qr_code")
validatedAt DateTime? @map("validated_at")
@@map("tickets")
}
enum Role {
ADMIN
ORGANIZER
BUYER
}
enum OrderStatus {
PENDING
PAID
REFUNDED
CANCELLED
}