From e5e73777cc51610cea40c7724563ac3dccbf4598 Mon Sep 17 00:00:00 2001 From: Martin Eyben Date: Tue, 3 Dec 2024 19:28:58 +0000 Subject: [PATCH] feat: add review on model listing --- PostgreSQL/src/create.sql | 7 +++++++ back-end/src/services/model.service.ts | 10 +++++++++- back-end/src/templates/models.ejs | 2 ++ back-end/src/types/model.ts | 7 ++++--- 4 files changed, 22 insertions(+), 4 deletions(-) diff --git a/PostgreSQL/src/create.sql b/PostgreSQL/src/create.sql index 937b401..d0a69a5 100644 --- a/PostgreSQL/src/create.sql +++ b/PostgreSQL/src/create.sql @@ -385,6 +385,13 @@ CREATE OR REPLACE VIEW nb_modele_par_membre AS GROUP BY membres.id_membre ); +-- Note avis des modeles avec le nombre d'avis +CREATE OR REPLACE VIEW modele_by_note AS +SELECT modeles.id_modele as id_modele, coalesce(AVG(note_noter), 0)::NUMERIC(5,2) as note, COUNT(note_noter) as nb_avis +FROM modeles +LEFT OUTER JOIN noter +ON noter.id_modele = modeles.id_modele +GROUP BY modeles.id_modele; -- ============================================================================ -- Triggers. -- ============================================================================ diff --git a/back-end/src/services/model.service.ts b/back-end/src/services/model.service.ts index 311293a..01294bc 100644 --- a/back-end/src/services/model.service.ts +++ b/back-end/src/services/model.service.ts @@ -25,6 +25,13 @@ async function getPiecesFromModel(id_model: number): Promise> { + const client = new_client(); + const res = await client.query(`SELECT * FROM modele_by_note WHERE id_modele = $1;`, [id_model]); + + return createPair(res.rows[0]['note'], res.rows[0]['nb_avis']); +} + async function db2Model(data: DBModel) { const model: Model = { id: data.id_modele, @@ -32,7 +39,8 @@ async function db2Model(data: DBModel) { url: data.url_notice_modele, creator: data.id_membre, inheritFrom: data.id_modele_2, - pieces: await getPiecesFromModel(data.id_modele) + pieces: await getPiecesFromModel(data.id_modele), + review: await getNoteFromModel(data.id_modele), }; return model; diff --git a/back-end/src/templates/models.ejs b/back-end/src/templates/models.ejs index c04a904..aca2b34 100644 --- a/back-end/src/templates/models.ejs +++ b/back-end/src/templates/models.ejs @@ -24,6 +24,7 @@ Id modèle Nom modèle Proposé par + Avis @@ -33,6 +34,7 @@ <%=model.id%> <%=model.name%> <%=model.creator%> + <%=model.review.first%>/5 (<%=model.review.second%> avis) diff --git a/back-end/src/types/model.ts b/back-end/src/types/model.ts index 0fbdf16..0ec8879 100644 --- a/back-end/src/types/model.ts +++ b/back-end/src/types/model.ts @@ -4,10 +4,11 @@ import { Piece } from './piece'; type Model = { id: number; name: string; - url: string; - creator: number; - inheritFrom: number; + url: string; + creator: number; + inheritFrom: number; pieces: Array> + review: Pair }; export { Model };