mirror of
https://github.com/detleph/server.git
synced 2026-09-04 23:45:00 +02:00
114 lines
3.1 KiB
Plaintext
114 lines
3.1 KiB
Plaintext
// Schema for the main database
|
|
|
|
datasource db {
|
|
provider = "postgresql"
|
|
url = env("DATABASE_URL")
|
|
}
|
|
|
|
generator client {
|
|
provider = "prisma-client-js"
|
|
}
|
|
|
|
model Event {
|
|
id Int @id @default(autoincrement()) // Primary key
|
|
pid String @unique @default(dbgenerated("gen_random_uuid()")) @db.Uuid // Public key
|
|
date DateTime
|
|
name String
|
|
|
|
disciplines Discipline[]
|
|
admins Admin[]
|
|
organisations Oragnisation[]
|
|
campaigns Campaign[]
|
|
}
|
|
|
|
model Admin {
|
|
id Int @id @default(autoincrement())
|
|
pid String @unique @default(dbgenerated("gen_random_uuid()")) @db.Uuid
|
|
name String
|
|
password String // TODO: Probably specify hash size (VarChar or some other type)
|
|
permission_level Int // TODO: Maybe extract into an enum
|
|
|
|
event Event @relation(fields: [eventId], references: [id])
|
|
eventId Int
|
|
}
|
|
|
|
model Campaign {
|
|
id Int @id @default(autoincrement())
|
|
pid String @unique @default(dbgenerated("gen_random_uuid()")) @db.Uuid
|
|
expiresAt DateTime
|
|
user_limit Int @default(40)
|
|
user_number Int @default(0)
|
|
links String[]
|
|
|
|
group Group @relation(fields: [groupId], references: [id])
|
|
groupId Int
|
|
event Event @relation(fields: [eventId], references: [id])
|
|
eventId Int
|
|
}
|
|
|
|
model Discipline {
|
|
id Int @id @default(autoincrement())
|
|
pid String @unique @default(dbgenerated("gen_random_uuid()")) @db.Uuid
|
|
name String
|
|
minTeamSize Int @default(1)
|
|
maxTeamSize Int @default(1)
|
|
roles Roles[]
|
|
|
|
teams Team[]
|
|
event Event @relation(fields: [eventId], references: [id])
|
|
eventId Int
|
|
}
|
|
|
|
model Roles {
|
|
id Int @id @default(autoincrement())
|
|
pid String @unique @default(dbgenerated("gen_random_uuid()")) @db.Uuid
|
|
name String
|
|
|
|
roles Participant @relation(fields: [participantId], references: [id])
|
|
discipline Discipline? @relation(fields: [disciplineId], references: [id])
|
|
disciplineId Int?
|
|
participantId Int
|
|
}
|
|
|
|
model Team {
|
|
id Int @id @default(autoincrement())
|
|
pid String @unique @default(dbgenerated("gen_random_uuid()")) @db.Uuid
|
|
name String
|
|
|
|
participants Participant[]
|
|
discipline Discipline @relation(fields: [disciplineId], references: [id])
|
|
disciplineId Int
|
|
}
|
|
|
|
model Participant {
|
|
id Int @id @default(autoincrement())
|
|
pid String @unique @default(dbgenerated("gen_random_uuid()")) @db.Uuid
|
|
firstName String
|
|
lastName String
|
|
email String
|
|
|
|
team Team @relation(fields: [teamId], references: [id])
|
|
teamId Int
|
|
Roles Roles[]
|
|
}
|
|
|
|
model Oragnisation {
|
|
id Int @id @default(autoincrement())
|
|
pid String @unique @default(dbgenerated("gen_random_uuid()")) @db.Uuid
|
|
name String
|
|
|
|
groups Group[]
|
|
event Event @relation(fields: [eventId], references: [id])
|
|
eventId Int
|
|
}
|
|
|
|
model Group {
|
|
id Int @id @default(autoincrement())
|
|
pid String @unique @default(dbgenerated("gen_random_uuid()")) @db.Uuid
|
|
name String
|
|
|
|
oragnisation Oragnisation @relation(fields: [oragnisationId], references: [id])
|
|
oragnisationId Int
|
|
campaign Campaign[]
|
|
}
|