diff --git a/ExpressAPI/src/managers/TagManager.ts b/ExpressAPI/src/managers/TagManager.ts index 51d2320ee02bc45327df3ffee711a64581a1c9fa..3baa8efa119b040505e96a56a499b097262ae167 100644 --- a/ExpressAPI/src/managers/TagManager.ts +++ b/ExpressAPI/src/managers/TagManager.ts @@ -1,16 +1,15 @@ -import { Prisma } from '@prisma/client'; -import { Assignment, User } from '../types/DatabaseTypes'; +import { Prisma, Tag } from '@prisma/client'; import db from '../helpers/DatabaseHelper'; -enum TagType{ - Language, - Framework, - Theme, - UserDefined -} - class TagManager { - + async get(name: string, include: Prisma.ExerciseInclude | undefined = undefined): Promise<Tag | undefined> { + return await db.exercise.findUnique({ + where : { + id: name + }, + include: include + }) as unknown as Tag ?? undefined; + } } diff --git a/ExpressAPI/src/middlewares/ParamsCallbackManager.ts b/ExpressAPI/src/middlewares/ParamsCallbackManager.ts index e087c983fef6ade7c36c7c21c346feca3afb5cb8..5027a7e6174af95c0d986ba7f753d08260d2f996 100644 --- a/ExpressAPI/src/middlewares/ParamsCallbackManager.ts +++ b/ExpressAPI/src/middlewares/ParamsCallbackManager.ts @@ -1,9 +1,9 @@ import { Express } from 'express-serve-static-core'; import express from 'express'; import { StatusCodes } from 'http-status-codes'; -import ExerciseManager from '../managers/ExerciseManager.js'; -import AssignmentManager from '../managers/AssignmentManager.js'; -import TagsManager from 'src/managers/TagsManager'; +import ExerciseManager from '../managers/ExerciseManager'; +import AssignmentManager from '../managers/AssignmentManager'; +import TagManager from '../managers/TagManager'; type GetFunction = (id: string | number, ...args: Array<unknown>) => Promise<unknown> @@ -47,12 +47,11 @@ class ParamsCallbackManager { results : true } ], 'exercise'); - //Patch? Delete? à la place de .get - this.listenParam('tagId', backend, (TagsManager.get as GetFunction).bind(TagsManager), [ { + this.listenParam('tagId', backend, (TagManager.get as GetFunction).bind(TagManager), [ { } ], 'tag'); - this.listenParam('tagProposalName', backend, (TagsManager.get as GetFunction).bind(TagsManager), [ { + this.listenParam('tagProposalName', backend, (TagManager.get as GetFunction).bind(TagManager), [ { } ], 'tag'); } diff --git a/ExpressAPI/src/routes/TagsRoutes.ts b/ExpressAPI/src/routes/TagsRoutes.ts index d8bc764c813d414a423544eaf2deea02905b1916..bcd9e7b87d66e361109a4f38f74f537cae9a5d93 100644 --- a/ExpressAPI/src/routes/TagsRoutes.ts +++ b/ExpressAPI/src/routes/TagsRoutes.ts @@ -6,26 +6,8 @@ import RoutesManager from '../express/RoutesManager'; import ParamsValidatorMiddleware from '../middlewares/ParamsValidatorMiddleware'; import SecurityMiddleware from '../middlewares/SecurityMiddleware'; import SecurityCheckType from '../types/SecurityCheckType'; -import GitlabUser from '../shared/types/Gitlab/GitlabUser'; -import GitlabManager from '../managers/GitlabManager'; -import Config from '../config/Config'; -import GitlabMember from '../shared/types/Gitlab/GitlabMember'; -import GitlabAccessLevel from '../shared/types/Gitlab/GitlabAccessLevel'; -import GitlabRepository from '../shared/types/Gitlab/GitlabRepository'; -import { AxiosError, HttpStatusCode } from 'axios'; -import logger from '../shared/logging/WinstonLogger'; -import DojoValidators from '../helpers/DojoValidators'; -import { Prisma } from '@prisma/client'; import db from '../helpers/DatabaseHelper'; import { Tags } from '../types/DatabaseTypes'; -import AssignmentManager from '../managers/AssignmentManager'; -import GitlabVisibility from '../shared/types/Gitlab/GitlabVisibility'; -import fs from 'fs'; -import path from 'path'; -import SharedAssignmentHelper from '../shared/helpers/Dojo/SharedAssignmentHelper'; -import GlobalHelper from '../helpers/GlobalHelper'; -import DojoStatusCode from '../shared/types/Dojo/DojoStatusCode'; -import TagsManager from '../managers/TagManager'; import { TagType } from '@prisma/client'; @@ -58,8 +40,10 @@ class TagRoutes implements RoutesManager { private async addTag(req: express.Request, res: express.Response) { const tagName = req.body.name const tagType = req.body.type + console.log("Popipo"); if(tagType != TagType.USERDEFINED && !req.session.profile.isAdmin) { + console.log("Hehehehe"); return req.session.sendResponse(res, StatusCodes.FORBIDDEN); } @@ -77,7 +61,8 @@ class TagRoutes implements RoutesManager { }, "Tag ajouté avec succès"); } private async deleteTag(req: express.Request, res: express.Response) { - let tagName = req.body.name + console.log("DELETE"); + const tagName = req.body.name db.tag.delete({ where : { name: tagName } @@ -85,11 +70,13 @@ class TagRoutes implements RoutesManager { return req.session.sendResponse(res, StatusCodes.OK, "Tag supprimé avec succès"); } private async getSubmittedTag(req: express.Request, res: express.Response) { - let tagState = req.body.state - if(req.body.state == null){ - tagState = tagState.PendingApproval - } - //TODO Here? + const tagName = req.body.name + + db.submissionTag.findMany({ + where : { + name: tagName + }, + }) return req.session.sendResponse(res, StatusCodes.OK, { name : req.body.name, tag : (req.boundParams.tag as Tags) @@ -99,7 +86,7 @@ class TagRoutes implements RoutesManager { const tagName = req.body.name const tagType = req.body.type - db.tag.upsert({ + db.submissionTag.upsert({ where : { name: tagName }, update: {}, create: { @@ -119,8 +106,8 @@ class TagRoutes implements RoutesManager { } else if (req.body.state == SubmitStatus.Declined){ return req.session.sendResponse(res, StatusCodes.OK, req.body.details); } else{ - let tagName = req.params.tagProposalName - let tagType = req.body.type + const tagName = req.params.tagProposalName + const tagType = req.body.type db.tag.upsert({ where : { name: tagName }, update: {},