From db01ec7493d6cc900da1f8bdc6b494df1bf09509 Mon Sep 17 00:00:00 2001 From: Joel von der Weid <joel.von-der-weid@hesge.ch> Date: Tue, 2 Apr 2024 15:17:05 +0200 Subject: [PATCH] Add sonar project creation for exercises --- ExpressAPI/src/helpers/GlobalHelper.ts | 5 +---- ExpressAPI/src/routes/AssignmentRoutes.ts | 1 - ExpressAPI/src/routes/ExerciseRoutes.ts | 16 ++++++++++++++++ 3 files changed, 17 insertions(+), 5 deletions(-) diff --git a/ExpressAPI/src/helpers/GlobalHelper.ts b/ExpressAPI/src/helpers/GlobalHelper.ts index 65fea1a..76c85b0 100644 --- a/ExpressAPI/src/helpers/GlobalHelper.ts +++ b/ExpressAPI/src/helpers/GlobalHelper.ts @@ -2,12 +2,9 @@ import express from 'express'; import GitlabRepository from '../shared/types/Gitlab/GitlabRepository'; import logger from '../shared/logging/WinstonLogger'; import GitlabManager from '../managers/GitlabManager'; -import axios, { AxiosError } from 'axios'; import { StatusCodes } from 'http-status-codes'; import DojoStatusCode from '../shared/types/Dojo/DojoStatusCode'; -import SharedConfig from '../shared/config/SharedConfig'; -import * as https from 'https'; - +import { AxiosError } from 'axios'; class GlobalHelper { async repositoryCreationError(message: string, error: unknown, req: express.Request, res: express.Response, gitlabError: DojoStatusCode, internalError: DojoStatusCode, repositoryToRemove?: GitlabRepository): Promise<void> { diff --git a/ExpressAPI/src/routes/AssignmentRoutes.ts b/ExpressAPI/src/routes/AssignmentRoutes.ts index 8f217b0..91c618f 100644 --- a/ExpressAPI/src/routes/AssignmentRoutes.ts +++ b/ExpressAPI/src/routes/AssignmentRoutes.ts @@ -169,7 +169,6 @@ class AssignmentRoutes implements RoutesManager { try { sonarProject = await SonarManager.createProjectFromGitlab(repository.id); } catch ( error ) { - console.log(JSON.stringify(error)); logger.error("Sonar project creation error"); logger.error(error); return GlobalHelper.repositoryCreationError('Sonar error', error, req, res, DojoStatusCode.ASSIGNMENT_CREATION_SONAR_ERROR, DojoStatusCode.ASSIGNMENT_CREATION_INTERNAL_ERROR, repository); diff --git a/ExpressAPI/src/routes/ExerciseRoutes.ts b/ExpressAPI/src/routes/ExerciseRoutes.ts index 1317f5b..fe22cab 100644 --- a/ExpressAPI/src/routes/ExerciseRoutes.ts +++ b/ExpressAPI/src/routes/ExerciseRoutes.ts @@ -31,6 +31,8 @@ import DojoStatusCode from '../shared/types/Dojo/DojoStatusCode'; import GlobalHelper from '../helpers/GlobalHelper'; import { IFileDirStat } from '../shared/helpers/recursiveFilesStats/RecursiveFilesStats'; import ExerciseManager from '../managers/ExerciseManager'; +import SonarProjectCreation from '../shared/types/Sonar/SonarProjectCreation'; +import SonarManager from '../managers/SonarManager'; class ExerciseRoutes implements RoutesManager { @@ -167,6 +169,18 @@ class ExerciseRoutes implements RoutesManager { } })); + // Create Sonar project + let sonarProject: SonarProjectCreation | undefined = undefined; + if (assignment.useSonar) { + try { + sonarProject = await SonarManager.createProjectFromGitlab(repository.id); + } catch ( error ) { + logger.error("Sonar project creation error"); + logger.error(error); + return GlobalHelper.repositoryCreationError('Sonar error', error, req, res, DojoStatusCode.EXERCISE_CREATION_SONAR_ERROR, DojoStatusCode.ASSIGNMENT_CREATION_INTERNAL_ERROR, repository); + } + } + const exercise: Exercise = await db.exercise.create({ data: { id : exerciseId, @@ -178,6 +192,8 @@ class ExerciseRoutes implements RoutesManager { gitlabCreationInfo: repository as unknown as Prisma.JsonObject, gitlabLastInfo : repository as unknown as Prisma.JsonObject, gitlabLastInfoDate: new Date(), + sonarKey : sonarProject?.project.key, + sonarCreationInfo : sonarProject?.project, members : { connectOrCreate: [ ...params.members.map(gitlabUser => { return { -- GitLab