From a55f38085b5c01e46bb84430a57702299a4701a2 Mon Sep 17 00:00:00 2001 From: Dlurak <84224239+Dlurak@users.noreply.github.com> Date: Mon, 26 Feb 2024 19:15:38 +0100 Subject: [PATCH] Add contributos to homework --- src/database/homework/homework.ts | 1 + src/migrations/addContributors.ts | 12 ++++++++++++ src/routes/homework/createHomework.ts | 1 + src/routes/homework/updateHomework.ts | 15 +++++++-------- 4 files changed, 21 insertions(+), 8 deletions(-) create mode 100644 src/migrations/addContributors.ts diff --git a/src/database/homework/homework.ts b/src/database/homework/homework.ts index 26b6dc9..57b2aab 100644 --- a/src/database/homework/homework.ts +++ b/src/database/homework/homework.ts @@ -9,6 +9,7 @@ homeworkCollection.createIndex({ class: 1, from: 1 }, { unique: true }); export interface Homework { creator: ObjectId; + contributors: ObjectId[]; class: ObjectId; createdAt: number; // timestamp diff --git a/src/migrations/addContributors.ts b/src/migrations/addContributors.ts new file mode 100644 index 0000000..747611b --- /dev/null +++ b/src/migrations/addContributors.ts @@ -0,0 +1,12 @@ +import { homeworkCollection } from '../database/homework/homework'; + +(async () => { + const allHomework = await homeworkCollection.find().toArray(); + + for (const hw of allHomework) { + homeworkCollection.updateOne( + { _id: hw._id }, + { $set: { contributors: [hw.creator] } }, + ); + } +})(); diff --git a/src/routes/homework/createHomework.ts b/src/routes/homework/createHomework.ts index 7d63f40..f4251fb 100644 --- a/src/routes/homework/createHomework.ts +++ b/src/routes/homework/createHomework.ts @@ -290,6 +290,7 @@ router.post('/', authenticate, async (req, res) => { buildHomework.class = classOfHomework._id; buildHomework.creator = user._id; buildHomework.createdAt = Date.now(); + buildHomework.contributors = []; let data: WithId; diff --git a/src/routes/homework/updateHomework.ts b/src/routes/homework/updateHomework.ts index 154c756..467e86d 100644 --- a/src/routes/homework/updateHomework.ts +++ b/src/routes/homework/updateHomework.ts @@ -365,15 +365,14 @@ router.put('/:id', authenticate, async (req, res) => { const { assignments, from } = zodResult.data; const newHomework: Homework = { from: sortDate(from), - assignments: assignments.map((assignment) => { - return { - subject: assignment.subject, - description: assignment.description, - due: sortDate(assignment.due), - }; - }), + assignments: assignments.map((assignment) => ({ + subject: assignment.subject, + description: assignment.description, + due: sortDate(assignment.due), + })), class: classId, - creator: userId, + creator: oldHomework.creator, + contributors: [...oldHomework.contributors, userId], createdAt, };