// This is your Prisma schema file, // learn more about it in the docs: https://pris.ly/d/prisma-schema generator client { provider = "prisma-client-js" } datasource db { provider = "postgresql" url = env("DATABASE_URL") } model User { id String @id @default(uuid(7)) name String created DateTime @default(now()) userRoles UserRole[] auth UserAuth[] tournamntsAdministrating Tournament[] @relation("admins") tournamentsModerating Tournament[] @relation("moderators") Tournament Tournament[] Player Player[] } model UserAuth { id Int @id @default(autoincrement()) user User @relation(fields: [userId], references: [id]) userId String provider AuthProvider @relation(fields: [providerId], references: [id]) providerId Int value String } model AuthProvider { id Int @id @default(autoincrement()) name String providerValue String userAuth UserAuth[] } model UserRole { user User @relation(fields: [userId], references: [id]) userId String role Role @relation(fields: [roleId], references: [id]) roleId Int @@id([userId, roleId]) } model Role { id Int @id @default(autoincrement()) name String userRoles UserRole[] } model Tournament { id String @id @default(uuid(7)) name String slug String? creator User @relation(fields: [creatorUserId], references: [id]) creatorUserId String created DateTime @default(now()) admins User[] @relation("admins") moderators User[] @relation("moderators") events Event[] } model Event { id String @id @default(uuid(7)) game Game @relation(fields: [gameId], references: [id]) gameId Int entrants EventPlayer[] title String phases Phase[] tournament Tournament @relation(fields: [tournamentId], references: [id]) tournamentId String created DateTime @default(now()) } enum PhaseType { DOUBLE_ELIM SINGLE_ELIM ROUND_ROBIN } model Phase { id String @id @default(uuid(7)) name String type PhaseType bracketCount Int phaseWinnerCount Int event Event @relation(fields: [eventId], references: [id]) eventId String created DateTime @default(now()) brackets Bracket[] } model Bracket { id Int @id @default(autoincrement()) name String created DateTime @default(now()) Phase Phase? @relation(fields: [phaseId], references: [id]) phaseId String? } model Player { id Int @id @default(autoincrement()) name String? user User? @relation(fields: [userId], references: [id]) userId String created DateTime @default(now()) userConfirmed Boolean @default(false) EventPlayer EventPlayer[] } model EventPlayer { event Event @relation(fields: [eventId], references: [id]) eventId String player Player @relation(fields: [playerId], references: [id]) playerId Int seed Int manuallySeeded Boolean @default(false) @@id([eventId, playerId]) } model Game { id Int @id @default(autoincrement()) title String slug String? created DateTime @default(now()) Event Event[] }