diff --git a/ExpressAPI/src/routes/ExerciseRoutes.ts b/ExpressAPI/src/routes/ExerciseRoutes.ts index 0abd3d1dfcc80cf07e44d447743a431fe3b78b70..e773d8c2f08c1484a830a28edb962e4031d9de73 100644 --- a/ExpressAPI/src/routes/ExerciseRoutes.ts +++ b/ExpressAPI/src/routes/ExerciseRoutes.ts @@ -32,21 +32,36 @@ import ExerciseResultsFile from '../shared/types/Dojo/ExerciseResults class ExerciseRoutes implements RoutesManager { private readonly exerciseValidator: ExpressValidator.Schema = { members: { - trim: true, notEmpty: true, customSanitizer: DojoValidators.jsonSanitizer + trim : true, + notEmpty : true, + customSanitizer: DojoValidators.jsonSanitizer } }; private readonly resultValidator: ExpressValidator.Schema = { - exitCode : { - isInt: true, toInt: true - }, commit : { - trim: true, notEmpty: true, customSanitizer: DojoValidators.jsonSanitizer - }, results : { - trim: true, notEmpty: true, custom: DojoValidators.exerciseResultsValidator, customSanitizer: DojoValidators.jsonSanitizer - }, files : { - trim: true, notEmpty: true, customSanitizer: DojoValidators.jsonSanitizer - }, archiveBase64: { - isBase64: true, notEmpty: true + exitCode : { + isInt: true, + toInt: true + }, + commit : { + trim : true, + notEmpty : true, + customSanitizer: DojoValidators.jsonSanitizer + }, + results : { + trim : true, + notEmpty : true, + custom : DojoValidators.exerciseResultsValidator, + customSanitizer: DojoValidators.jsonSanitizer + }, + files : { + trim : true, + notEmpty : true, + customSanitizer: DojoValidators.jsonSanitizer + }, + archiveBase64: { + isBase64: true, + notEmpty: true } }; @@ -130,12 +145,23 @@ class ExerciseRoutes implements RoutesManager { const exercise: Exercise = await db.exercise.create({ data: { - id: exerciseId, assignmentName: assignment.name, name: repository.name, secret: secret, gitlabId: repository.id, gitlabLink: repository.web_url, gitlabCreationInfo: repository as unknown as Prisma.JsonObject, gitlabLastInfo: repository as unknown as Prisma.JsonObject, gitlabLastInfoDate: new Date(), members: { + id : exerciseId, + assignmentName : assignment.name, + name : repository.name, + secret : secret, + gitlabId : repository.id, + gitlabLink : repository.web_url, + gitlabCreationInfo: repository as unknown as Prisma.JsonObject, + gitlabLastInfo : repository as unknown as Prisma.JsonObject, + gitlabLastInfoDate: new Date(), + members : { connectOrCreate: [ ...params.members.map(gitlabUser => { return { - create : { - gitlabId: gitlabUser.id, firstname: gitlabUser.name - }, where: { + create: { + gitlabId : gitlabUser.id, + firstname: gitlabUser.name + }, + where : { gitlabId: gitlabUser.id } }; @@ -186,7 +212,9 @@ class ExerciseRoutes implements RoutesManager { })); return req.session.sendResponse(res, StatusCodes.OK, { - assignment: (req.boundParams.exercise as Exercise).assignment, assignmentFile: dojoAssignmentFile, immutable: immutableFiles + assignment : (req.boundParams.exercise as Exercise).assignment, + assignmentFile: dojoAssignmentFile, + immutable : immutableFiles }); } @@ -196,7 +224,12 @@ class ExerciseRoutes implements RoutesManager { const result = await db.result.create({ data: { - exerciseId: exercise.id, exitCode: params.exitCode, success: params.results.success, commit: params.commit, results: params.results as unknown as Prisma.JsonObject, files: params.files + exerciseId: exercise.id, + exitCode : params.exitCode, + success : params.results.success!, + commit : params.commit, + results : params.results as unknown as Prisma.JsonObject, + files : params.files } });