From 78242772390d5634fa68cb064383bb307f3362ff Mon Sep 17 00:00:00 2001 From: Nemo D'ACREMONT Date: Wed, 27 Nov 2024 15:40:08 +0100 Subject: [PATCH] feat: add get models by note --- back-end/src/controllers/model.controller.ts | 8 +++++++- back-end/src/routes/model.route.ts | 2 ++ back-end/src/services/model.service.ts | 13 +++++++++++++ back-end/src/templates/rendu.ejs | 2 ++ 4 files changed, 24 insertions(+), 1 deletion(-) diff --git a/back-end/src/controllers/model.controller.ts b/back-end/src/controllers/model.controller.ts index 4767f7f..38e1d4e 100644 --- a/back-end/src/controllers/model.controller.ts +++ b/back-end/src/controllers/model.controller.ts @@ -34,16 +34,22 @@ const modelById: RequestHandler<{ id: string; }> = async (req, res) => { }; -const allModelsFromFans: RequestHandler = async (req, res) => { +const allModelsFromFans: RequestHandler = async (_req, res) => { const models = await modelService.getAllModelsFromFans(); res.render('models.ejs', { models }); }; +const allModelsByNote: RequestHandler = async (_req, res) => { + const models = await modelService.getAllModelsByNote(); + res.render('models.ejs', { models }); +}; + const modelController = { modelByName, allModels, modelById, allModelsFromFans, + allModelsByNote, }; export default modelController; diff --git a/back-end/src/routes/model.route.ts b/back-end/src/routes/model.route.ts index f519ebc..befff70 100644 --- a/back-end/src/routes/model.route.ts +++ b/back-end/src/routes/model.route.ts @@ -9,6 +9,8 @@ modelRouter.get("/byname/:name", modelController.modelByName); modelRouter.get("/fromfan", modelController.allModelsFromFans); +modelRouter.get("/bynote", modelController.allModelsByNote); + modelRouter.get("/byid/:id", modelController.modelById); export default modelRouter; diff --git a/back-end/src/services/model.service.ts b/back-end/src/services/model.service.ts index f272d38..6777f4c 100644 --- a/back-end/src/services/model.service.ts +++ b/back-end/src/services/model.service.ts @@ -63,6 +63,18 @@ const getAllModelsFromFans = async () => { return res.rows.map(db2Model); } +const getAllModelsByNote = async () => { + const client = new_client(); + await client.connect(); + + const res = await client.query( + "SELECT * FROM noter GROUP BY id_modele ORDER BY AVG(note_noter) DESC" + ); + + await client.end(); + return res.rows.map(db2Model); +} + const createModel = async (name: string, url: string, creator: number, inheritFrom: number): Promise> => { const gettingModel = await getModel(name); if (!gettingModel.hasRight) { @@ -91,6 +103,7 @@ const modelService = { getAllModels, createModel, getAllModelsFromFans, + getAllModelsByNote, }; export default modelService; diff --git a/back-end/src/templates/rendu.ejs b/back-end/src/templates/rendu.ejs index 5b25c08..aeb247a 100644 --- a/back-end/src/templates/rendu.ejs +++ b/back-end/src/templates/rendu.ejs @@ -14,6 +14,8 @@

Liste des modèles proposés par des fans

+

Liste des modèles par note décroissante

+

Liste des boites ayant moins de 5 ans