104 lines
2.2 KiB
Plaintext
104 lines
2.2 KiB
Plaintext
generator client {
|
|
provider = "prisma-client-js"
|
|
}
|
|
|
|
datasource db {
|
|
provider = "postgresql"
|
|
url = env("DATABASE_URL")
|
|
}
|
|
|
|
model User {
|
|
id String @id @default(cuid())
|
|
email String @unique
|
|
password String
|
|
name String
|
|
role Role @default(PLAYER)
|
|
predictions Prediction[]
|
|
createdAt DateTime @default(now())
|
|
updatedAt DateTime @updatedAt
|
|
}
|
|
|
|
enum Role {
|
|
ADMIN
|
|
PLAYER
|
|
}
|
|
|
|
model Team {
|
|
id String @id @default(cuid())
|
|
name String
|
|
shortName String @unique
|
|
isoCode String @unique
|
|
group String
|
|
groupOrder Int
|
|
confederation String
|
|
homeMatches Match[] @relation("HomeTeam")
|
|
awayMatches Match[] @relation("AwayTeam")
|
|
|
|
@@index([group])
|
|
}
|
|
|
|
model Match {
|
|
id String @id @default(cuid())
|
|
matchNumber Int @unique
|
|
phase Phase
|
|
group String?
|
|
matchday Int?
|
|
homeTeam Team? @relation("HomeTeam", fields: [homeTeamId], references: [id])
|
|
homeTeamId String?
|
|
awayTeam Team? @relation("AwayTeam", fields: [awayTeamId], references: [id])
|
|
awayTeamId String?
|
|
homeLabel String?
|
|
awayLabel String?
|
|
scheduledAt DateTime
|
|
venue String?
|
|
homeScore Int?
|
|
awayScore Int?
|
|
status MatchStatus @default(SCHEDULED)
|
|
predictions Prediction[]
|
|
createdAt DateTime @default(now())
|
|
updatedAt DateTime @updatedAt
|
|
|
|
@@index([phase])
|
|
@@index([group])
|
|
@@index([status])
|
|
@@index([scheduledAt])
|
|
}
|
|
|
|
enum Phase {
|
|
GROUP_STAGE
|
|
ROUND_OF_32
|
|
ROUND_OF_16
|
|
QUARTER_FINALS
|
|
SEMI_FINALS
|
|
THIRD_PLACE
|
|
FINAL
|
|
}
|
|
|
|
enum MatchStatus {
|
|
SCHEDULED
|
|
LIVE
|
|
FINISHED
|
|
}
|
|
|
|
model Prediction {
|
|
id String @id @default(cuid())
|
|
user User @relation(fields: [userId], references: [id])
|
|
userId String
|
|
match Match @relation(fields: [matchId], references: [id])
|
|
matchId String
|
|
result PredictionResult
|
|
points Int?
|
|
createdAt DateTime @default(now())
|
|
updatedAt DateTime @updatedAt
|
|
|
|
@@unique([userId, matchId])
|
|
@@index([userId])
|
|
@@index([matchId])
|
|
}
|
|
|
|
enum PredictionResult {
|
|
HOME
|
|
DRAW
|
|
AWAY
|
|
}
|