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 0000000000000000000000000000000000000000..cf8fa0240acfd338b0414f0394685a96b8b2602b --- /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 a68226e0868e475d54557f330fa35699e2f34bf7..f60367392fbfdcdf104a78dea1e20a0101bdddb9 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 89ec9c767cb8f879011a7f5e547eb1942657de7b..9dc14bb292ef7e2921617c135b1e4f8d014e2a78 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 632b05be5eda9eebf30a8c392e5a4020292dd10d..ae95e3bfb03a2b7c52dab17b486f36439ae139f6 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