From fe31a7fa34530fec7595eafa5e3116983cb8519d Mon Sep 17 00:00:00 2001 From: Laurin <60652077+Flexla54@users.noreply.github.com> Date: Sun, 20 Mar 2022 14:34:49 +0100 Subject: [PATCH] Adding VisualElement (v.2.1) --- prisma/schema.prisma | 328 ++++++++++++++++++++++--------------------- 1 file changed, 171 insertions(+), 157 deletions(-) diff --git a/prisma/schema.prisma b/prisma/schema.prisma index 4106c5f..03ea4e4 100644 --- a/prisma/schema.prisma +++ b/prisma/schema.prisma @@ -1,157 +1,171 @@ -// 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 - description String - - disciplines Discipline[] - organisations Organisation[] - campaign Campaign[] -} - -model Campaign { - id Int @id @default(autoincrement()) - pid String @unique @default(dbgenerated("gen_random_uuid()")) @db.Uuid - start DateTime - expiresAt DateTime - - links Link[] - event Event @relation(fields: [eventId], references: [id]) - eventId Int @unique -} - -model Link { - id Int @id @default(autoincrement()) - pid String @unique @default(dbgenerated("gen_random_uuid()")) @db.Uuid - link String - - campaign Campaign @relation(fields: [campaignId], references: [id]) - campaignId Int - group Group? @relation(fields: [groupId], references: [id]) - groupId Int @unique -} - -model Admin { - id Int @id @default(autoincrement()) - pid String @unique @default(dbgenerated("gen_random_uuid()")) @db.Uuid - name String @unique - password String // TODO: Probably specify hash size (VarChar or some other type) - - permission_level AdminLevel @default(STANDARD) - revision DateTime @default(now()) - groups Group[] -} - -model Discipline { - id Int @id @default(autoincrement()) - pid String @unique @default(dbgenerated("gen_random_uuid()")) @db.Uuid - name String - minTeamSize Int - maxTeamSize Int - roles RoleSchema[] - - teams Team[] - event Event @relation(fields: [eventId], references: [id]) - eventId Int -} - -model RoleSchema { - id Int @id @default(autoincrement()) - pid String @unique @default(dbgenerated("gen_random_uuid()")) @db.Uuid - name String - schema Json - - roles Role[] - 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 - leaderEmail String - - roles Role[] @relation(name: "participants") - 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 - gender Gender - - group Group @relation(fields: [groupId], references: [id]) - groupId Int - roles Role[] -} - -model Role { - id Int @id @default(autoincrement()) - pid String @unique @default(dbgenerated("gen_random")) - name String //e.g. runner, swimmer,... - importance Job - score String - - participant Participant? @relation(fields: [participantId], references: [id]) - participantId Int? - team Team @relation(name: "participants", fields: [teamId], references: [id]) - teamId Int - schema RoleSchema @relation(fields: [schemaId], references: [id]) - schemaId Int -} - -model Organisation { - 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 - user_limit Int @default(40) - level Int - - oragnisation Organisation @relation(fields: [oragnisationId], references: [id]) - oragnisationId Int - participants Participant[] - link Link? - admins Admin[] -} - -enum AdminLevel { - STANDARD - ELEVATED -} - -enum Gender { - MALE - FEMALE - OTHER -} - -enum Job { - TEAMLEADER - MEMBER -} \ No newline at end of file +// 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 + description String + + disciplines Discipline[] + organisations Organisation[] + campaign Campaign[] + visual VisualElement[] +} + +model Campaign { + id Int @id @default(autoincrement()) + pid String @unique @default(dbgenerated("gen_random_uuid()")) @db.Uuid + start DateTime + expiresAt DateTime + + links Link[] + event Event @relation(fields: [eventId], references: [id]) + eventId Int @unique +} + +model Link { + id Int @id @default(autoincrement()) + pid String @unique @default(dbgenerated("gen_random_uuid()")) @db.Uuid + link String + + campaign Campaign @relation(fields: [campaignId], references: [id]) + campaignId Int + group Group? @relation(fields: [groupId], references: [id]) + groupId Int @unique +} + +model Admin { + id Int @id @default(autoincrement()) + pid String @unique @default(dbgenerated("gen_random_uuid()")) @db.Uuid + name String @unique + password String // TODO: Probably specify hash size (VarChar or some other type) + + permission_level AdminLevel @default(STANDARD) + revision DateTime @default(now()) + groups Group[] +} + +model Discipline { + id Int @id @default(autoincrement()) + pid String @unique @default(dbgenerated("gen_random_uuid()")) @db.Uuid + name String + minTeamSize Int + maxTeamSize Int + roles RoleSchema[] + + teams Team[] + event Event @relation(fields: [eventId], references: [id]) + eventId Int + visual VisualElement[] +} + +model RoleSchema { + id Int @id @default(autoincrement()) + pid String @unique @default(dbgenerated("gen_random_uuid()")) @db.Uuid + name String + schema Json + + roles Role[] + discipline Discipline @relation(fields: [disciplineId], references: [id]) + disciplineId Int + visual VisualElement[] +} + +model Team { + id Int @id @default(autoincrement()) + pid String @unique @default(dbgenerated("gen_random_uuid()")) @db.Uuid + name String + leaderEmail String + + roles Role[] @relation(name: "participants") + 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 + gender Gender + relevance Job + + group Group @relation(fields: [groupId], references: [id]) + groupId Int + roles Role[] +} + +model Role { + id Int @id @default(autoincrement()) + pid String @unique @default(dbgenerated("gen_random")) + name String //e.g. runner, swimmer,... + score String + + participant Participant? @relation(fields: [participantId], references: [id]) + participantId Int? + team Team @relation(name: "participants", fields: [teamId], references: [id]) + teamId Int + schema RoleSchema @relation(fields: [schemaId], references: [id]) + schemaId Int +} + +model Organisation { + 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 + user_limit Int @default(40) + level Int + + oragnisation Organisation @relation(fields: [oragnisationId], references: [id]) + oragnisationId Int + participants Participant[] + link Link? + admins Admin[] +} + +model VisualElement { + id Int @id @default(autoincrement()) + pid String @unique @default(dbgenerated("gen_random_uuid()")) @db.Uuid + description String + location String + + event Event[] + discipline Discipline[] + role RoleSchema[] +} + +enum AdminLevel { + STANDARD + ELEVATED +} + +enum Gender { + MALE + FEMALE + OTHER +} + +enum Job { + TEAMLEADER + MEMBER +}