From 42c3a72804d66ca6c0b6f15b30441d328dfcefb9 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Micha=C3=ABl=20Minelli?= <michael@minelli.me>
Date: Wed, 21 Feb 2024 00:41:31 +0100
Subject: [PATCH] DB => Update model for include correction informations

---
 .../migration.sql                                    |  2 ++
 ExpressAPI/prisma/schema.prisma                      |  2 ++
 ExpressAPI/src/helpers/DatabaseHelper.ts             | 12 +++++++-----
 ExpressAPI/src/types/DatabaseTypes.ts                |  8 ++++++--
 4 files changed, 17 insertions(+), 7 deletions(-)
 create mode 100644 ExpressAPI/prisma/migrations/20240208132018_add_correction_to_assignment/migration.sql

diff --git a/ExpressAPI/prisma/migrations/20240208132018_add_correction_to_assignment/migration.sql b/ExpressAPI/prisma/migrations/20240208132018_add_correction_to_assignment/migration.sql
new file mode 100644
index 0000000..cf8fa02
--- /dev/null
+++ b/ExpressAPI/prisma/migrations/20240208132018_add_correction_to_assignment/migration.sql
@@ -0,0 +1,2 @@
+-- AlterTable
+ALTER TABLE `Exercise` ADD COLUMN `correctionCommit` JSON NULL;
diff --git a/ExpressAPI/prisma/schema.prisma b/ExpressAPI/prisma/schema.prisma
index a68226e..f603673 100644
--- a/ExpressAPI/prisma/schema.prisma
+++ b/ExpressAPI/prisma/schema.prisma
@@ -50,6 +50,8 @@ model Exercise {
     gitlabLastInfo     Json     @db.Json
     gitlabLastInfoDate DateTime
 
+    correctionCommit Json? @db.Json
+
     assignment Assignment @relation(fields: [assignmentName], references: [name], onDelete: NoAction, onUpdate: Cascade)
 
     members User[]
diff --git a/ExpressAPI/src/helpers/DatabaseHelper.ts b/ExpressAPI/src/helpers/DatabaseHelper.ts
index 89ec9c7..9dc14bb 100644
--- a/ExpressAPI/src/helpers/DatabaseHelper.ts
+++ b/ExpressAPI/src/helpers/DatabaseHelper.ts
@@ -1,7 +1,9 @@
-import { PrismaClient }    from '@prisma/client';
-import logger              from '../shared/logging/WinstonLogger';
-import UserQueryExtension  from './Prisma/Extensions/UserQueryExtension';
-import UserResultExtension from './Prisma/Extensions/UserResultExtension';
+import { PrismaClient }          from '@prisma/client';
+import logger                    from '../shared/logging/WinstonLogger';
+import UserQueryExtension        from './Prisma/Extensions/UserQueryExtension';
+import UserResultExtension       from './Prisma/Extensions/UserResultExtension';
+import AssignmentResultExtension from './Prisma/Extensions/AssignmentResultExtension';
+import ExerciseResultExtension   from './Prisma/Extensions/ExerciseResultExtension';
 
 
 const prisma = new PrismaClient({
@@ -29,7 +31,7 @@ prisma.$on('warn', e => logger.warn(`Prisma => ${ e.message }`));
 prisma.$on('error', e => logger.error(`Prisma => ${ e.message }`));
 
 
-const db = prisma.$extends(UserQueryExtension).$extends(UserResultExtension);
+const db = prisma.$extends(UserQueryExtension).$extends(UserResultExtension).$extends(AssignmentResultExtension).$extends(ExerciseResultExtension);
 
 
 export default db;
\ No newline at end of file
diff --git a/ExpressAPI/src/types/DatabaseTypes.ts b/ExpressAPI/src/types/DatabaseTypes.ts
index 632b05b..ae95e3b 100644
--- a/ExpressAPI/src/types/DatabaseTypes.ts
+++ b/ExpressAPI/src/types/DatabaseTypes.ts
@@ -31,6 +31,10 @@ export type User = Prisma.UserGetPayload<typeof userBase> & {
     isAdmin: boolean
     gitlabProfile: LazyVal<GitlabUser>
 }
-export type Assignment = Prisma.AssignmentGetPayload<typeof assignmentBase>
-export type Exercise = Prisma.ExerciseGetPayload<typeof exerciseBase>
+export type Exercise = Prisma.ExerciseGetPayload<typeof exerciseBase> & {
+    isCorrection: boolean
+}
+export type Assignment = Prisma.AssignmentGetPayload<typeof assignmentBase> & {
+    corrections: LazyVal<Exercise>
+}
 export type Result = Prisma.ResultGetPayload<typeof resultBase>
\ No newline at end of file
-- 
GitLab