From 98688c68a6eb912d5356adfad6dc57cd4b95d434 Mon Sep 17 00:00:00 2001 From: "bedran.sezer" <bedran.sezer@etu.hesge.ch> Date: Fri, 9 Aug 2024 12:58:45 +0200 Subject: [PATCH] add stats --- ExpressAPI/src/routes/ExerciseRoutes.ts | 35 +++++++++++++++++++++++++ 1 file changed, 35 insertions(+) diff --git a/ExpressAPI/src/routes/ExerciseRoutes.ts b/ExpressAPI/src/routes/ExerciseRoutes.ts index ae3d4b9..5bc2a77 100644 --- a/ExpressAPI/src/routes/ExerciseRoutes.ts +++ b/ExpressAPI/src/routes/ExerciseRoutes.ts @@ -76,6 +76,41 @@ class ExerciseRoutes implements RoutesManager { backend.delete('/exercises/:exerciseIdOrUrl', SecurityMiddleware.check(true, SecurityCheckType.ADMIN, SecurityCheckType.EXERCISE_MEMBERS), this.deleteExercise.bind(this) as RequestHandler); backend.post('/exercises/:exerciseIdOrUrl/results', SecurityMiddleware.check(false, SecurityCheckType.EXERCISE_SECRET), ParamsValidatorMiddleware.validate(this.resultValidator), this.createResult.bind(this) as RequestHandler); + + backend.get('/exercises', this.getAllExercises.bind(this)); + + backend.get('/exercises/:exerciseIdOrLink/results', SecurityMiddleware.check(true), this.getExerciseResultsByIdOrLink.bind(this)); + } + + private async getExerciseResultsByIdOrLink(req: express.Request, res: express.Response) { + const exerciseIdOrLink = req.params.exerciseIdOrLink; + + + const exercise = await db.exercise.findFirst({ + where: { + OR: [ + { id: exerciseIdOrLink }, + { gitlabLink: exerciseIdOrLink } + ] + } + }); + + if (!exercise) { + return res.status(StatusCodes.NOT_FOUND).send('Exercise not found'); + } + + + const results = await db.result.findMany({ + where: { exerciseId: exercise.id }, + }); + + return res.status(StatusCodes.OK).json(results); + } + + + private async getAllExercises(req: express.Request, res: express.Response) { + const exo = await db.exercise.findMany(); + return req.session.sendResponse(res, StatusCodes.OK, exo); } private getExerciseName(assignment: Assignment, members: Array<Gitlab.UserSchema>, suffix: number): string { -- GitLab