Adding VisualElement (v.2.1)

This commit is contained in:
Laurin
2022-03-20 17:44:11 +01:00
committed by La_Felx
parent c0ce7f32ca
commit fe31a7fa34
+171 -157
View File
@@ -1,157 +1,171 @@
// Schema for the main database // Schema for the main database
datasource db { datasource db {
provider = "postgresql" provider = "postgresql"
url = env("DATABASE_URL") url = env("DATABASE_URL")
} }
generator client { generator client {
provider = "prisma-client-js" provider = "prisma-client-js"
} }
model Event { model Event {
id Int @id @default(autoincrement()) // Primary key id Int @id @default(autoincrement()) // Primary key
pid String @unique @default(dbgenerated("gen_random_uuid()")) @db.Uuid // Public key pid String @unique @default(dbgenerated("gen_random_uuid()")) @db.Uuid // Public key
date DateTime date DateTime
name String name String
description String description String
disciplines Discipline[] disciplines Discipline[]
organisations Organisation[] organisations Organisation[]
campaign Campaign[] campaign Campaign[]
} visual VisualElement[]
}
model Campaign {
id Int @id @default(autoincrement()) model Campaign {
pid String @unique @default(dbgenerated("gen_random_uuid()")) @db.Uuid id Int @id @default(autoincrement())
start DateTime pid String @unique @default(dbgenerated("gen_random_uuid()")) @db.Uuid
expiresAt DateTime start DateTime
expiresAt DateTime
links Link[]
event Event @relation(fields: [eventId], references: [id]) links Link[]
eventId Int @unique event Event @relation(fields: [eventId], references: [id])
} eventId Int @unique
}
model Link {
id Int @id @default(autoincrement()) model Link {
pid String @unique @default(dbgenerated("gen_random_uuid()")) @db.Uuid id Int @id @default(autoincrement())
link String pid String @unique @default(dbgenerated("gen_random_uuid()")) @db.Uuid
link String
campaign Campaign @relation(fields: [campaignId], references: [id])
campaignId Int campaign Campaign @relation(fields: [campaignId], references: [id])
group Group? @relation(fields: [groupId], references: [id]) campaignId Int
groupId Int @unique group Group? @relation(fields: [groupId], references: [id])
} groupId Int @unique
}
model Admin {
id Int @id @default(autoincrement()) model Admin {
pid String @unique @default(dbgenerated("gen_random_uuid()")) @db.Uuid id Int @id @default(autoincrement())
name String @unique pid String @unique @default(dbgenerated("gen_random_uuid()")) @db.Uuid
password String // TODO: Probably specify hash size (VarChar or some other type) name String @unique
password String // TODO: Probably specify hash size (VarChar or some other type)
permission_level AdminLevel @default(STANDARD)
revision DateTime @default(now()) permission_level AdminLevel @default(STANDARD)
groups Group[] revision DateTime @default(now())
} groups Group[]
}
model Discipline {
id Int @id @default(autoincrement()) model Discipline {
pid String @unique @default(dbgenerated("gen_random_uuid()")) @db.Uuid id Int @id @default(autoincrement())
name String pid String @unique @default(dbgenerated("gen_random_uuid()")) @db.Uuid
minTeamSize Int name String
maxTeamSize Int minTeamSize Int
roles RoleSchema[] maxTeamSize Int
roles RoleSchema[]
teams Team[]
event Event @relation(fields: [eventId], references: [id]) teams Team[]
eventId Int 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 model RoleSchema {
name String id Int @id @default(autoincrement())
schema Json pid String @unique @default(dbgenerated("gen_random_uuid()")) @db.Uuid
name String
roles Role[] schema Json
discipline Discipline @relation(fields: [disciplineId], references: [id])
disciplineId Int roles Role[]
} discipline Discipline @relation(fields: [disciplineId], references: [id])
disciplineId Int
model Team { visual VisualElement[]
id Int @id @default(autoincrement()) }
pid String @unique @default(dbgenerated("gen_random_uuid()")) @db.Uuid
name String model Team {
leaderEmail String id Int @id @default(autoincrement())
pid String @unique @default(dbgenerated("gen_random_uuid()")) @db.Uuid
roles Role[] @relation(name: "participants") name String
discipline Discipline @relation(fields: [disciplineId], references: [id]) leaderEmail String
disciplineId Int
} roles Role[] @relation(name: "participants")
discipline Discipline @relation(fields: [disciplineId], references: [id])
model Participant { disciplineId Int
id Int @id @default(autoincrement()) }
pid String @unique @default(dbgenerated("gen_random_uuid()")) @db.Uuid
firstName String model Participant {
lastName String id Int @id @default(autoincrement())
gender Gender pid String @unique @default(dbgenerated("gen_random_uuid()")) @db.Uuid
firstName String
group Group @relation(fields: [groupId], references: [id]) lastName String
groupId Int gender Gender
roles Role[] relevance Job
}
group Group @relation(fields: [groupId], references: [id])
model Role { groupId Int
id Int @id @default(autoincrement()) roles Role[]
pid String @unique @default(dbgenerated("gen_random")) }
name String //e.g. runner, swimmer,...
importance Job model Role {
score String id Int @id @default(autoincrement())
pid String @unique @default(dbgenerated("gen_random"))
participant Participant? @relation(fields: [participantId], references: [id]) name String //e.g. runner, swimmer,...
participantId Int? score String
team Team @relation(name: "participants", fields: [teamId], references: [id])
teamId Int participant Participant? @relation(fields: [participantId], references: [id])
schema RoleSchema @relation(fields: [schemaId], references: [id]) participantId Int?
schemaId Int team Team @relation(name: "participants", fields: [teamId], references: [id])
} teamId Int
schema RoleSchema @relation(fields: [schemaId], references: [id])
model Organisation { schemaId Int
id Int @id @default(autoincrement()) }
pid String @unique @default(dbgenerated("gen_random_uuid()")) @db.Uuid
name String model Organisation {
id Int @id @default(autoincrement())
groups Group[] pid String @unique @default(dbgenerated("gen_random_uuid()")) @db.Uuid
event Event @relation(fields: [eventId], references: [id]) name String
eventId Int
} groups Group[]
event Event @relation(fields: [eventId], references: [id])
model Group { eventId Int
id Int @id @default(autoincrement()) }
pid String @unique @default(dbgenerated("gen_random_uuid()")) @db.Uuid
name String model Group {
user_limit Int @default(40) id Int @id @default(autoincrement())
level Int pid String @unique @default(dbgenerated("gen_random_uuid()")) @db.Uuid
name String
oragnisation Organisation @relation(fields: [oragnisationId], references: [id]) user_limit Int @default(40)
oragnisationId Int level Int
participants Participant[]
link Link? oragnisation Organisation @relation(fields: [oragnisationId], references: [id])
admins Admin[] oragnisationId Int
} participants Participant[]
link Link?
enum AdminLevel { admins Admin[]
STANDARD }
ELEVATED
} model VisualElement {
id Int @id @default(autoincrement())
enum Gender { pid String @unique @default(dbgenerated("gen_random_uuid()")) @db.Uuid
MALE description String
FEMALE location String
OTHER
} event Event[]
discipline Discipline[]
enum Job { role RoleSchema[]
TEAMLEADER }
MEMBER
} enum AdminLevel {
STANDARD
ELEVATED
}
enum Gender {
MALE
FEMALE
OTHER
}
enum Job {
TEAMLEADER
MEMBER
}