diff --git a/ExpressAPI/src/helpers/GlobalHelper.ts b/ExpressAPI/src/helpers/GlobalHelper.ts index 65fea1ae8c8c8b3ea10258ecfeca72f0aab67018..76c85b016cc04f7b280e4c3aefd8c3cc5847f357 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 8f217b0a15a85c06524fe7e2a8f58729b6980c00..91c618f59f32ae457b6df2784df87931da44884d 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 1317f5b40469d183c88323ee17cf2e5beab4176e..fe22cabf138b4f8c083b89966396afb0cdcb37f5 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 {