feat: add get models by note

This commit is contained in:
Nemo D'ACREMONT 2024-11-27 15:40:08 +01:00
parent 6ec761cdd7
commit 7824277239
No known key found for this signature in database
GPG Key ID: 6E5BCE8022FA8276
4 changed files with 24 additions and 1 deletions

View File

@ -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(); const models = await modelService.getAllModelsFromFans();
res.render('models.ejs', { models }); res.render('models.ejs', { models });
}; };
const allModelsByNote: RequestHandler = async (_req, res) => {
const models = await modelService.getAllModelsByNote();
res.render('models.ejs', { models });
};
const modelController = { const modelController = {
modelByName, modelByName,
allModels, allModels,
modelById, modelById,
allModelsFromFans, allModelsFromFans,
allModelsByNote,
}; };
export default modelController; export default modelController;

View File

@ -9,6 +9,8 @@ modelRouter.get("/byname/:name", modelController.modelByName);
modelRouter.get("/fromfan", modelController.allModelsFromFans); modelRouter.get("/fromfan", modelController.allModelsFromFans);
modelRouter.get("/bynote", modelController.allModelsByNote);
modelRouter.get("/byid/:id", modelController.modelById); modelRouter.get("/byid/:id", modelController.modelById);
export default modelRouter; export default modelRouter;

View File

@ -63,6 +63,18 @@ const getAllModelsFromFans = async () => {
return res.rows.map(db2Model); 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<Either<Model, string>> => { const createModel = async (name: string, url: string, creator: number, inheritFrom: number): Promise<Either<Model, string>> => {
const gettingModel = await getModel(name); const gettingModel = await getModel(name);
if (!gettingModel.hasRight) { if (!gettingModel.hasRight) {
@ -91,6 +103,7 @@ const modelService = {
getAllModels, getAllModels,
createModel, createModel,
getAllModelsFromFans, getAllModelsFromFans,
getAllModelsByNote,
}; };
export default modelService; export default modelService;

View File

@ -14,6 +14,8 @@
<a href="/models/fromfan"><p>Liste des modèles proposés par des fans</p></a> <a href="/models/fromfan"><p>Liste des modèles proposés par des fans</p></a>
<a href="/models/bynote"><p>Liste des modèles par note décroissante</p></a>
<a href="javascript:let now = new Date();now.setUTCFullYear(now.getUTCFullYear() - 5);window.location.pathname = '/boxes/from/' + `${now.getUTCFullYear()}-${now.getUTCMonth() + 1}-${now.getUTCDate()}`;"> <a href="javascript:let now = new Date();now.setUTCFullYear(now.getUTCFullYear() - 5);window.location.pathname = '/boxes/from/' + `${now.getUTCFullYear()}-${now.getUTCMonth() + 1}-${now.getUTCDate()}`;">
<p>Liste des boites ayant moins de 5 ans</p> <p>Liste des boites ayant moins de 5 ans</p>
</a> </a>