Initial commit
This commit is contained in:
@@ -0,0 +1,197 @@
|
||||
generator client {
|
||||
provider = "prisma-client-js"
|
||||
output = "../app/generated/prisma"
|
||||
}
|
||||
|
||||
datasource db {
|
||||
provider = "postgresql"
|
||||
url = env("DATABASE_URL")
|
||||
}
|
||||
|
||||
model User {
|
||||
id Int @id @default(autoincrement())
|
||||
email String @unique
|
||||
name String
|
||||
role UserRole
|
||||
|
||||
emailConfirmedAt DateTime? @db.Timestamptz(3)
|
||||
|
||||
loginLinks UserLoginLinks[]
|
||||
|
||||
deactivated Boolean @default(false)
|
||||
|
||||
createdAt DateTime @default(now()) @db.Timestamptz(3)
|
||||
updatedAt DateTime @updatedAt @db.Timestamptz(3)
|
||||
deletedAt DateTime? @db.Timestamptz(3)
|
||||
|
||||
huntsCreated Hunt[]
|
||||
huntsMember HuntMember[]
|
||||
|
||||
teamsOwner HuntTeam[]
|
||||
teamsMember TeamMember[]
|
||||
answers QuestAnswer[] @relation("AnswerMember")
|
||||
reviews QuestAnswer[] @relation("AnswerReview")
|
||||
}
|
||||
|
||||
enum UserRole {
|
||||
USER
|
||||
CREATOR
|
||||
ADMIN
|
||||
}
|
||||
|
||||
model UserLoginLinks {
|
||||
id Int @id @default(autoincrement())
|
||||
|
||||
secret String
|
||||
used Boolean @default(false)
|
||||
|
||||
user User @relation(fields: [userId], references: [id], onUpdate: Cascade, onDelete: Cascade)
|
||||
userId Int
|
||||
|
||||
createdAt DateTime @default(now()) @db.Timestamptz(3)
|
||||
}
|
||||
|
||||
model Hunt {
|
||||
id Int @id @default(autoincrement())
|
||||
name String
|
||||
description String
|
||||
|
||||
virtual Boolean @default(false)
|
||||
start DateTime? @db.Timestamptz(3)
|
||||
end DateTime? @db.Timestamptz(3)
|
||||
allowJoin Boolean @default(false)
|
||||
revealPictures Boolean @default(false)
|
||||
revealAnswers Boolean @default(false)
|
||||
|
||||
creator User @relation(fields: [creatorId], references: [id], onUpdate: Cascade, onDelete: Cascade)
|
||||
creatorId Int
|
||||
|
||||
createdAt DateTime @default(now()) @db.Timestamptz(3)
|
||||
updatedAt DateTime @updatedAt @db.Timestamptz(3)
|
||||
deletedAt DateTime? @db.Timestamptz(3)
|
||||
|
||||
teams HuntTeam[]
|
||||
members HuntMember[]
|
||||
|
||||
quests HuntQuest[]
|
||||
|
||||
@@index([creatorId])
|
||||
}
|
||||
|
||||
model HuntMember {
|
||||
hunt Hunt @relation(fields: [huntId], references: [id], onUpdate: Cascade, onDelete: Cascade)
|
||||
huntId Int
|
||||
|
||||
member User @relation(fields: [memberId], references: [id], onUpdate: Cascade, onDelete: Cascade)
|
||||
memberId Int
|
||||
|
||||
createdAt DateTime @default(now()) @db.Timestamptz(3)
|
||||
|
||||
@@unique([memberId, huntId])
|
||||
@@index([memberId, huntId])
|
||||
@@index([memberId])
|
||||
@@index([huntId])
|
||||
}
|
||||
|
||||
model HuntTeam {
|
||||
id Int @id @default(autoincrement())
|
||||
name String
|
||||
description String @default("")
|
||||
password String @default("")
|
||||
|
||||
hunt Hunt @relation(fields: [huntId], references: [id], onUpdate: Cascade, onDelete: Cascade)
|
||||
huntId Int
|
||||
|
||||
owner User @relation(fields: [ownerId], references: [id], onUpdate: Cascade, onDelete: Cascade)
|
||||
ownerId Int
|
||||
|
||||
createdAt DateTime @default(now()) @db.Timestamptz(3)
|
||||
|
||||
members TeamMember[]
|
||||
answers QuestAnswer[]
|
||||
|
||||
@@index([ownerId])
|
||||
@@index([huntId])
|
||||
}
|
||||
|
||||
model TeamMember {
|
||||
team HuntTeam @relation(fields: [teamId], references: [id], onUpdate: Cascade, onDelete: Cascade)
|
||||
teamId Int
|
||||
|
||||
member User @relation(fields: [memberId], references: [id], onUpdate: Cascade, onDelete: Cascade)
|
||||
memberId Int
|
||||
|
||||
createdAt DateTime @default(now()) @db.Timestamptz(3)
|
||||
|
||||
@@unique([memberId, teamId])
|
||||
@@index([teamId])
|
||||
@@index([memberId])
|
||||
@@index([memberId, teamId])
|
||||
}
|
||||
|
||||
enum TextType {
|
||||
TEXT
|
||||
WORD
|
||||
NUMBER
|
||||
INTEGER
|
||||
}
|
||||
|
||||
model HuntQuest {
|
||||
id Int @id @default(autoincrement())
|
||||
title String
|
||||
description String @default("")
|
||||
question String?
|
||||
image String?
|
||||
location String?
|
||||
locationLink String?
|
||||
|
||||
order Int @default(0)
|
||||
optional Boolean @default(true)
|
||||
pictureRequired Boolean @default(false)
|
||||
textRequired Boolean @default(false)
|
||||
textType TextType @default(TEXT)
|
||||
textUnit String?
|
||||
textSolution String?
|
||||
|
||||
points Int @default(10) @db.SmallInt
|
||||
extraPoints Int? @db.SmallInt
|
||||
extraText String?
|
||||
|
||||
hunt Hunt @relation(fields: [huntId], references: [id], onUpdate: Cascade, onDelete: Cascade)
|
||||
huntId Int
|
||||
|
||||
answers QuestAnswer[]
|
||||
|
||||
@@index([huntId])
|
||||
}
|
||||
|
||||
model QuestAnswer {
|
||||
id Int @id @default(autoincrement())
|
||||
text String?
|
||||
picture String?
|
||||
location String?
|
||||
lat Decimal? @db.Decimal(10, 8)
|
||||
lon Decimal? @db.Decimal(10, 8)
|
||||
|
||||
team HuntTeam @relation(fields: [teamId], references: [id], onUpdate: Cascade, onDelete: Cascade)
|
||||
teamId Int
|
||||
|
||||
member User @relation("AnswerMember", fields: [memberId], references: [id], onUpdate: Cascade, onDelete: Cascade)
|
||||
memberId Int
|
||||
|
||||
quest HuntQuest @relation(fields: [questId], references: [id], onUpdate: Cascade, onDelete: Cascade)
|
||||
questId Int
|
||||
|
||||
createdAt DateTime @default(now()) @db.Timestamptz(3)
|
||||
updatedAt DateTime @updatedAt @db.Timestamptz(3)
|
||||
|
||||
reviewer User? @relation("AnswerReview", fields: [reviewerId], references: [id], onUpdate: Cascade, onDelete: Cascade)
|
||||
reviewerId Int?
|
||||
|
||||
score Int? @db.SmallInt
|
||||
review String?
|
||||
|
||||
@@index([teamId])
|
||||
@@index([memberId])
|
||||
@@index([questId])
|
||||
}
|
||||
Reference in New Issue
Block a user