Start admin pages
This commit is contained in:
@@ -0,0 +1,4 @@
|
||||
-- AlterTable
|
||||
ALTER TABLE "public"."QuestAnswer" ADD COLUMN "internalNote" TEXT,
|
||||
ADD COLUMN "rankingValue" INTEGER,
|
||||
ADD COLUMN "showcase" BOOLEAN NOT NULL DEFAULT false;
|
||||
@@ -0,0 +1,5 @@
|
||||
-- DropIndex
|
||||
DROP INDEX "public"."File_url_key";
|
||||
|
||||
-- DropIndex
|
||||
DROP INDEX "public"."File_uuid_key";
|
||||
+16
-8
@@ -30,7 +30,7 @@ model User {
|
||||
answers QuestAnswer[] @relation("AnswerMember")
|
||||
reviews QuestAnswer[] @relation("AnswerReview")
|
||||
|
||||
uploaded_files File[]
|
||||
uploadedFiles File[]
|
||||
}
|
||||
|
||||
enum UserRole {
|
||||
@@ -41,8 +41,8 @@ enum UserRole {
|
||||
|
||||
model File {
|
||||
id Int @id @default(autoincrement())
|
||||
uuid String @unique
|
||||
url String @unique
|
||||
uuid String
|
||||
url String
|
||||
|
||||
creator User @relation(fields: [creatorId], references: [id], onUpdate: Cascade, onDelete: Cascade)
|
||||
creatorId Int
|
||||
@@ -90,7 +90,7 @@ model Hunt {
|
||||
|
||||
quests HuntQuest[]
|
||||
|
||||
old_files File[] @relation("OldHuntFiles")
|
||||
oldFiles File[] @relation("OldHuntFiles")
|
||||
|
||||
@@index([creatorId])
|
||||
}
|
||||
@@ -181,7 +181,7 @@ model HuntQuest {
|
||||
|
||||
answers QuestAnswer[]
|
||||
|
||||
old_files File[] @relation("OldQuestFiles")
|
||||
oldFiles File[] @relation("OldQuestFiles")
|
||||
|
||||
@@index([huntId])
|
||||
}
|
||||
@@ -211,10 +211,18 @@ model QuestAnswer {
|
||||
reviewer User? @relation("AnswerReview", fields: [reviewerId], references: [id], onUpdate: Cascade, onDelete: Cascade)
|
||||
reviewerId Int?
|
||||
|
||||
score Int? @db.SmallInt
|
||||
review String?
|
||||
/// Final score for this answer including bonus
|
||||
score Int? @db.SmallInt
|
||||
/// Will be shown public once "revealAnswers" is true, otherwise its only visible for the team members
|
||||
review String?
|
||||
/// Will only be shown to hunt members
|
||||
internalNote String?
|
||||
/// Can be used for sorting answers based on a custom metric (e.g. distance, time)
|
||||
rankingValue Int?
|
||||
/// If true, this answer will be featured in the end showcase
|
||||
showcase Boolean @default(false)
|
||||
|
||||
old_files File[] @relation("OldAnswerFiles")
|
||||
oldFiles File[] @relation("OldAnswerFiles")
|
||||
|
||||
@@index([teamId])
|
||||
@@index([memberId])
|
||||
|
||||
+127
-3
@@ -53,6 +53,51 @@ async function main() {
|
||||
emailConfirmedAt: new Date()
|
||||
}
|
||||
});
|
||||
|
||||
const user2 = await tx.user.upsert({
|
||||
where: { email: 'user2@mail.com' },
|
||||
update: {},
|
||||
create: {
|
||||
email: 'user2@mail.com',
|
||||
name: 'User2',
|
||||
role: 'USER',
|
||||
password,
|
||||
emailConfirmedAt: new Date()
|
||||
}
|
||||
});
|
||||
const teamMember2 = await tx.user.upsert({
|
||||
where: { email: 'member2@mail.com' },
|
||||
update: {},
|
||||
create: {
|
||||
email: 'member2@mail.com',
|
||||
name: 'Team Member2',
|
||||
role: 'USER',
|
||||
password,
|
||||
emailConfirmedAt: new Date()
|
||||
}
|
||||
});
|
||||
const user3 = await tx.user.upsert({
|
||||
where: { email: 'user3@mail.com' },
|
||||
update: {},
|
||||
create: {
|
||||
email: 'user3@mail.com',
|
||||
name: 'User3',
|
||||
role: 'USER',
|
||||
password,
|
||||
emailConfirmedAt: new Date()
|
||||
}
|
||||
});
|
||||
const teamMember3 = await tx.user.upsert({
|
||||
where: { email: 'member3@mail.com' },
|
||||
update: {},
|
||||
create: {
|
||||
email: 'member3@mail.com',
|
||||
name: 'Team Member3',
|
||||
role: 'USER',
|
||||
password,
|
||||
emailConfirmedAt: new Date()
|
||||
}
|
||||
});
|
||||
// endregion
|
||||
|
||||
const hunt = await tx.hunt.create({
|
||||
@@ -116,6 +161,19 @@ async function main() {
|
||||
question: 'In welchem Gebäude und Stockwerk wart ihr?',
|
||||
textType: 'TEXT',
|
||||
order: 2
|
||||
},
|
||||
{
|
||||
title: 'Einfach mal abhauen',
|
||||
description:
|
||||
'Fahrt so weit ihr wollt und macht ein Foto vom Haltestellenschild!',
|
||||
question: 'An welcher Haltestelle wart ihr?',
|
||||
order: 3,
|
||||
pictureRequired: true,
|
||||
textRequired: true,
|
||||
textType: 'TEXT',
|
||||
points: 3,
|
||||
extraPoints: 30,
|
||||
extraText: 'Je weiter weg'
|
||||
}
|
||||
]
|
||||
},
|
||||
@@ -141,6 +199,32 @@ async function main() {
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
ownerId: user2.id,
|
||||
name: 'Team 2',
|
||||
description: 'Das schlechteste Informatik Team!',
|
||||
password: 'top secret',
|
||||
members: {
|
||||
create: [
|
||||
{
|
||||
memberId: teamMember2.id
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
ownerId: user3.id,
|
||||
name: 'Team 3',
|
||||
description: 'Das Informatik Team!',
|
||||
password: 'top secret',
|
||||
members: {
|
||||
create: [
|
||||
{
|
||||
memberId: teamMember3.id
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -148,11 +232,16 @@ async function main() {
|
||||
});
|
||||
|
||||
const team = hunt.teams[0];
|
||||
const team2 = hunt.teams[1];
|
||||
const team3 = hunt.teams[2];
|
||||
|
||||
const images = [
|
||||
'/img/dummy/moin1.jpeg',
|
||||
'/img/dummy/musikanten1.jpg',
|
||||
'/img/dummy/aussicht1.jpeg'
|
||||
'/img/dummy/aussicht1.jpeg',
|
||||
'https://pichunt.s3.swarm.syma.dev/0197ff6a-ce49-7000-a5b0-f32f1ee1b4ee',
|
||||
'https://pichunt.s3.swarm.syma.dev/0197ff1a-3c8e-7000-8ba6-fa9c06548f82',
|
||||
'https://pichunt.s3.swarm.syma.dev/0197ff5b-f74d-7000-864c-20f531481fcc'
|
||||
];
|
||||
const answers = await tx.questAnswer.createManyAndReturn({
|
||||
data: [
|
||||
@@ -166,7 +255,8 @@ async function main() {
|
||||
lon: 8.809734,
|
||||
reviewerId: admin.id,
|
||||
score: 10,
|
||||
review: 'Schönes Bild!'
|
||||
review: 'Schönes Bild!',
|
||||
internalNote: 'Wow!'
|
||||
},
|
||||
{
|
||||
teamId: team.id,
|
||||
@@ -183,7 +273,41 @@ async function main() {
|
||||
text: 'Neustadtswall AB-Gebäude Etage 10',
|
||||
score: 17,
|
||||
reviewerId: huntMember.id,
|
||||
review: 'Höchstes Team, aber leider gabs andere im AB!'
|
||||
review: 'Höchstes Team, aber leider gabs andere im AB!',
|
||||
rankingValue: 10
|
||||
},
|
||||
{
|
||||
teamId: team.id,
|
||||
memberId: teamMember.id,
|
||||
questId: hunt.quests[3].id,
|
||||
text: 'Theater am Leibnizplatz',
|
||||
score: 13,
|
||||
reviewerId: admin.id,
|
||||
review: 'Ihr wart 612m weit weg!',
|
||||
rankingValue: 612,
|
||||
internalNote: '612m'
|
||||
},
|
||||
{
|
||||
teamId: team2.id,
|
||||
memberId: teamMember2.id,
|
||||
questId: hunt.quests[3].id,
|
||||
text: 'Bürgerpark',
|
||||
score: 21,
|
||||
reviewerId: admin.id,
|
||||
review: 'Ihr wart 2110m weit weg!',
|
||||
rankingValue: 2110,
|
||||
internalNote: 'Bisher am weitesten'
|
||||
},
|
||||
{
|
||||
teamId: team3.id,
|
||||
memberId: teamMember3.id,
|
||||
questId: hunt.quests[3].id,
|
||||
text: 'Am Brill',
|
||||
score: 18,
|
||||
reviewerId: huntMember.id,
|
||||
review: 'Ihr wart 945m weit weg!',
|
||||
rankingValue: 945,
|
||||
showcase: true
|
||||
}
|
||||
]
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user