feat: add review on model listing

This commit is contained in:
Martin Eyben 2024-12-03 19:28:58 +00:00
parent e54159b323
commit e5e73777cc
4 changed files with 22 additions and 4 deletions

View File

@ -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.
-- ============================================================================

View File

@ -25,6 +25,13 @@ async function getPiecesFromModel(id_model: number): Promise<Array<Pair<Piece, n
return arr;
}
async function getNoteFromModel(id_model: number): Promise<Pair<number, number>> {
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;

View File

@ -24,6 +24,7 @@
<th>Id modèle</th>
<th>Nom modèle</th>
<th>Proposé par</th>
<th>Avis</th>
<th></th>
</tr>
</thead>
@ -33,6 +34,7 @@
<td><%=model.id%></td>
<td><%=model.name%></td>
<td><a href="/membres/byid/<%=model.creator%>"><i class="fa-solid fa-user"></i> <%=model.creator%></a></td>
<td><%=model.review.first%>/5 (<%=model.review.second%> avis)</td>
<td><a href="/models/byname/<%=model.name%>"><i class="fa-solid fa-eye"></i></a></td>
</tr>

View File

@ -8,6 +8,7 @@ type Model = {
creator: number;
inheritFrom: number;
pieces: Array<Pair<Piece, number>>
review: Pair<number, number>
};
export { Model };