Files
server/prisma/schema.prisma
T
2021-11-01 18:19:41 +01:00

114 lines
3.0 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 Role[]
teams Team[]
event Event @relation(fields: [eventId], references: [id])
eventId Int
}
model Role {
id Int @id @default(autoincrement())
pid String @unique @default(dbgenerated("gen_random_uuid()")) @db.Uuid
name String
schema Json
participant Participant[]
discipline Discipline @relation(fields: [disciplineId], references: [id])
disciplineId 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 Role[]
}
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[]
}