// 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) teams Team[] event Event @relation(fields: [eventId], references: [id]) eventId 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 } 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[] }