diff --git a/ExpressAPI/src/helpers/Prisma/Extensions/AssignmentResultExtension.ts b/ExpressAPI/src/helpers/Prisma/Extensions/AssignmentResultExtension.ts new file mode 100644 index 0000000000000000000000000000000000000000..56819c91d853807036d4848fd6b9fbefcc128792 --- /dev/null +++ b/ExpressAPI/src/helpers/Prisma/Extensions/AssignmentResultExtension.ts @@ -0,0 +1,36 @@ +import { Prisma } from '@prisma/client'; +import { Exercise } from '../../../types/DatabaseTypes'; +import db from '../../DatabaseHelper'; +import LazyVal from '../../../shared/helpers/LazyVal'; + + +async function getCorrections(assignment: { name: string }): Promise<Array<Exercise> | undefined> { + try { + return await db.exercise.findMany({ + where: { + assignmentName : assignment.name, + correctionCommit: { + not: Prisma.JsonNull + } + } + }) as Array<Exercise> ?? undefined; + } catch ( e ) { + return undefined; + } +} + +export default Prisma.defineExtension(client => { + return client.$extends({ + result: { + assignment: { + corrections: { + compute(assignment) { + return new LazyVal<Array<Exercise> | undefined>(() => { + return getCorrections(assignment); + }); + } + } + } + } + }); +}); \ No newline at end of file diff --git a/ExpressAPI/src/helpers/Prisma/Extensions/ExerciseResultExtension.ts b/ExpressAPI/src/helpers/Prisma/Extensions/ExerciseResultExtension.ts new file mode 100644 index 0000000000000000000000000000000000000000..e11b4e247e78b59b49e0ebd52cb669857954d431 --- /dev/null +++ b/ExpressAPI/src/helpers/Prisma/Extensions/ExerciseResultExtension.ts @@ -0,0 +1,19 @@ +import { Prisma } from '@prisma/client'; + + +export default Prisma.defineExtension(client => { + return client.$extends({ + result: { + exercise: { + isCorrection: { + needs: { + correctionCommit: true + }, + compute(exercise) { + return exercise.correctionCommit != null; + } + } + } + } + }); +}); \ No newline at end of file