feat: add review on model listing
This commit is contained in:
parent
e54159b323
commit
e5e73777cc
@ -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.
|
||||
-- ============================================================================
|
||||
|
@ -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;
|
||||
|
@ -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>
|
||||
|
||||
|
@ -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<Pair<Piece, number>>
|
||||
review: Pair<number, number>
|
||||
};
|
||||
|
||||
export { Model };
|
||||
|
Loading…
x
Reference in New Issue
Block a user