// 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"
}
datasource db {
provider = "postgresql"
url = env("DATABASE_URL")
}
model Organization {
id String @id @default(cuid())
name String
createdAt DateTime @default(now())
updatedAt DateTime @updatedAt
members User[] @relation("OrganizationMembers")
displays Display[]
}
model User {
id String @id
email String?
firstName String?
lastName String?
organizations Organization[] @relation("OrganizationMembers")
createdAt DateTime @default(now())
updatedAt DateTime @updatedAt
// Clerk user ID
clerkUserId String @unique
@@map("users")
}
model Display {
id String @id @default(cuid())
name String
organization Organization @relation(fields: [organizationId], references: [id])
organizationId String
authToken String @unique
mode DisplayMode @default(TWITCH)
twitchChannel String?
createdAt DateTime @default(now())
updatedAt DateTime @updatedAt
authCodes DisplayAuthCode[]
@@index([organizationId])
@@map("displays")
}
model DisplayAuthCode {
id String @id @default(cuid())
code String @unique
displayId String
display Display @relation(fields: [displayId], references: [id], onDelete: Cascade) // Ensure relation is well-defined
expiresAt DateTime
createdAt DateTime @default(now())
}
enum DisplayMode {
TWITCH
PLAYLIST
MENU
}