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
|
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.
|
-- Triggers.
|
||||||
-- ============================================================================
|
-- ============================================================================
|
||||||
|
@ -25,6 +25,13 @@ async function getPiecesFromModel(id_model: number): Promise<Array<Pair<Piece, n
|
|||||||
return arr;
|
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) {
|
async function db2Model(data: DBModel) {
|
||||||
const model: Model = {
|
const model: Model = {
|
||||||
id: data.id_modele,
|
id: data.id_modele,
|
||||||
@ -32,7 +39,8 @@ async function db2Model(data: DBModel) {
|
|||||||
url: data.url_notice_modele,
|
url: data.url_notice_modele,
|
||||||
creator: data.id_membre,
|
creator: data.id_membre,
|
||||||
inheritFrom: data.id_modele_2,
|
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;
|
return model;
|
||||||
|
@ -24,6 +24,7 @@
|
|||||||
<th>Id modèle</th>
|
<th>Id modèle</th>
|
||||||
<th>Nom modèle</th>
|
<th>Nom modèle</th>
|
||||||
<th>Proposé par</th>
|
<th>Proposé par</th>
|
||||||
|
<th>Avis</th>
|
||||||
<th></th>
|
<th></th>
|
||||||
</tr>
|
</tr>
|
||||||
</thead>
|
</thead>
|
||||||
@ -33,6 +34,7 @@
|
|||||||
<td><%=model.id%></td>
|
<td><%=model.id%></td>
|
||||||
<td><%=model.name%></td>
|
<td><%=model.name%></td>
|
||||||
<td><a href="/membres/byid/<%=model.creator%>"><i class="fa-solid fa-user"></i> <%=model.creator%></a></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>
|
<td><a href="/models/byname/<%=model.name%>"><i class="fa-solid fa-eye"></i></a></td>
|
||||||
</tr>
|
</tr>
|
||||||
|
|
||||||
|
@ -8,6 +8,7 @@ type Model = {
|
|||||||
creator: number;
|
creator: number;
|
||||||
inheritFrom: number;
|
inheritFrom: number;
|
||||||
pieces: Array<Pair<Piece, number>>
|
pieces: Array<Pair<Piece, number>>
|
||||||
|
review: Pair<number, number>
|
||||||
};
|
};
|
||||||
|
|
||||||
export { Model };
|
export { Model };
|
||||||
|
Loading…
x
Reference in New Issue
Block a user