mirror of
https://git.roussel.pro/telecom-paris/pact.git
synced 2026-02-09 10:30:17 +01:00
ajout commentaires
This commit is contained in:
@@ -1,7 +1,11 @@
|
|||||||
import conn from '../database.js';
|
import conn from '../database.js';
|
||||||
|
|
||||||
// TODO: Fct qui renvoie les X avis les plus récents, Fct qui renvoie les X dernières stats journalières/hebdo/etc, handler de requète, documenter le format de requête
|
/**
|
||||||
const getLastReview = (limit) => {
|
* Renvoie les derniers avis laissés sur la borne trié par ordre chronologque décroissant
|
||||||
|
* @param {Number} limit Nombre d'avis a afficher
|
||||||
|
* @returns Une liste d'objets de la forme {id: id de l'avis, date: date de l'avis, note_principale: note sur 10, commentaire: avis textuel, nom_source, sexe_auteur, age_auteur}
|
||||||
|
*/
|
||||||
|
const getLastReviews = (limit=10) => {
|
||||||
return new Promise((resolve, reject) => {
|
return new Promise((resolve, reject) => {
|
||||||
let sql = `SELECT id,date,note_principale,commentaire,sources.nom as nom_source, borne_auteurs.sexe as sexe_auteur, borne_auteurs.age as age_auteur
|
let sql = `SELECT id,date,note_principale,commentaire,sources.nom as nom_source, borne_auteurs.sexe as sexe_auteur, borne_auteurs.age as age_auteur
|
||||||
FROM borne_avis
|
FROM borne_avis
|
||||||
@@ -18,6 +22,11 @@ const getLastReview = (limit) => {
|
|||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Renvoie les informations sur un avis avec un ID spécifique
|
||||||
|
* @param {Number} id Id de la review
|
||||||
|
* @returns Un objet de la forme des objets dans la table borne_avis ayant l'id id s'il existe, renvoie une erreur sinon
|
||||||
|
*/
|
||||||
const getReviewFromId = (id) => {
|
const getReviewFromId = (id) => {
|
||||||
return new Promise((resolve, reject) => {
|
return new Promise((resolve, reject) => {
|
||||||
let sql = `SELECT * FROM borne_avis WHERE id = ? LIMIT 1`;
|
let sql = `SELECT * FROM borne_avis WHERE id = ? LIMIT 1`;
|
||||||
@@ -25,12 +34,21 @@ const getReviewFromId = (id) => {
|
|||||||
if(err) {
|
if(err) {
|
||||||
reject(err);
|
reject(err);
|
||||||
}else {
|
}else {
|
||||||
resolve(res)
|
if(res.length != 1) {
|
||||||
|
reject(new Error("Avis avec cet ID non trouvé"))
|
||||||
|
}else {
|
||||||
|
resolve(res[0])
|
||||||
|
}
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
const getCriteres = (limit) => {
|
|
||||||
|
/**
|
||||||
|
* Renvoie tout les critères de notation valides
|
||||||
|
* @returns Une liste d'objets de la forme {id,nom}
|
||||||
|
*/
|
||||||
|
const getCriteres = () => {
|
||||||
return new Promise((resolve, reject) => {
|
return new Promise((resolve, reject) => {
|
||||||
let sql = `SELECT * FROM borne_criteres`;
|
let sql = `SELECT * FROM borne_criteres`;
|
||||||
conn.query(sql, [limit], (err, res) => {
|
conn.query(sql, [limit], (err, res) => {
|
||||||
@@ -43,14 +61,20 @@ const getCriteres = (limit) => {
|
|||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
const getNotesAutresFromCritere = (critere,limit) => {
|
/**
|
||||||
|
* Renvoie les "limit" notes les plus récentes laissées pour un critère spécifié
|
||||||
|
* @param {String} critere Nom de critère
|
||||||
|
* @param {Number} limit Nombre max de note a afficher
|
||||||
|
* @returns une liste d'objets de la forme {id,date,critere,note,avis_id:id de l'avis lié a cette note}
|
||||||
|
*/
|
||||||
|
const getNotesAutresFromCritere = (critere,limit=10) => {
|
||||||
return new Promise((resolve, reject) => {
|
return new Promise((resolve, reject) => {
|
||||||
let sql = `SELECT borne_notes_autre.id,date,borne_criteres.nom as critere, note, avis_id
|
let sql = `SELECT borne_notes_autre.id as id,date,borne_criteres.nom as critere, note, avis_id
|
||||||
FROM borne_notes_autre
|
FROM borne_notes_autre
|
||||||
JOIN borne_criteres ON borne_criteres.id = critere_id
|
JOIN borne_criteres ON borne_criteres.id = critere_id
|
||||||
WHERE borne_criteres = ?
|
WHERE borne_criteres.nom = ?
|
||||||
ORDER BY borne_notes_autre.id DESC LIMIT ?;`;
|
ORDER BY borne_notes_autre.id DESC LIMIT ? ;`;
|
||||||
conn.query(sql, [[critere, limit]], (err, res) => {
|
conn.query(sql, [critere,limit], (err, res) => {
|
||||||
if(err) {
|
if(err) {
|
||||||
reject(err);
|
reject(err);
|
||||||
}else {
|
}else {
|
||||||
@@ -60,14 +84,19 @@ const getNotesAutresFromCritere = (critere,limit) => {
|
|||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
const getnotesautresfromreview = (reviewid) => {
|
/**
|
||||||
return new promise((resolve, reject) => {
|
* Renvoie toutes les notes sur des critères spécifiques laissée pour un avis spécifique
|
||||||
let sql = `select borne_notes_autre.id,borne_criteres.nom as critere, note, avis_id
|
* @param {Number} reviewId Id de l'avis
|
||||||
from borne_notes_autre
|
* @returns une liste d'objets de la forme {id,critere:nom du critère, note:note sur 10}
|
||||||
join borne_criteres on borne_criteres.id = critere_id
|
*/
|
||||||
where avis_id = ?
|
const getNotesAutresFromReview = (reviewId) => {
|
||||||
order by borne_notes_autre.id desc`;
|
return new Promise((resolve, reject) => {
|
||||||
conn.query(sql, [limit], (err, res) => {
|
let sql = `SELECT borne_notes_autre.id as id,borne_criteres.nom as critere, note
|
||||||
|
FROM borne_notes_autre
|
||||||
|
JOIN borne_criteres on borne_criteres.id = critere_id
|
||||||
|
WHERE avis_id = ?
|
||||||
|
ORDER BY borne_notes_autre.id DESC`;
|
||||||
|
conn.query(sql, [reviewId], (err, res) => {
|
||||||
if(err) {
|
if(err) {
|
||||||
reject(err);
|
reject(err);
|
||||||
}else {
|
}else {
|
||||||
@@ -77,9 +106,14 @@ const getnotesautresfromreview = (reviewid) => {
|
|||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
const getStats = (interval, limit) => {
|
* Renvoie les dernières statistiques
|
||||||
return new promise((resolve, reject) => {
|
* @param {String} interval Interval de temps de la statistique, valeurs possibles : "jour","mois","semaine","annee"
|
||||||
|
* @param {*} limit Nombre max de stats a renvoyer
|
||||||
|
* @returns Une liste d'objet ou chaque objet correspond a une stat sur une periode donnée (par ex une stat hebdo datée du 07/01 correspond a une stat sur la semaine du 01/01 au 07/01), ces objets sont de la forme
|
||||||
|
*/
|
||||||
|
const getStats = (interval, limit=10) => {
|
||||||
|
return new Promise((resolve, reject) => {
|
||||||
if(!["jour","mois","semaine","annee"].includes(interval)) {
|
if(!["jour","mois","semaine","annee"].includes(interval)) {
|
||||||
reject(new Error("Invalid time interval"));
|
reject(new Error("Invalid time interval"));
|
||||||
return;
|
return;
|
||||||
@@ -94,7 +128,3 @@ const getStats = (interval, limit) => {
|
|||||||
})
|
})
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
getLastReview(5).then(rows => console.log(rows))
|
|
||||||
Reference in New Issue
Block a user