mirror of
https://git.roussel.pro/telecom-paris/pact.git
synced 2026-02-09 10:30:17 +01:00
Ajout fonctions pour récupérer les avis
This commit is contained in:
100
code/server/borne/get_handler.js
Normal file
100
code/server/borne/get_handler.js
Normal file
@@ -0,0 +1,100 @@
|
|||||||
|
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) => {
|
||||||
|
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
|
||||||
|
FROM borne_avis
|
||||||
|
JOIN sources ON sources.id = source_id
|
||||||
|
JOIN borne_auteurs ON borne_auteurs.id = id_auteur
|
||||||
|
ORDER BY borne_avis.id DESC LIMIT ?`;
|
||||||
|
conn.query(sql, [limit], (err, res) => {
|
||||||
|
if(err) {
|
||||||
|
reject(err);
|
||||||
|
}else {
|
||||||
|
resolve(res)
|
||||||
|
}
|
||||||
|
})
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
const getReviewFromId = (id) => {
|
||||||
|
return new Promise((resolve, reject) => {
|
||||||
|
let sql = `SELECT * FROM borne_avis WHERE id = ? LIMIT 1`;
|
||||||
|
conn.query(sql, [id], (err, res) => {
|
||||||
|
if(err) {
|
||||||
|
reject(err);
|
||||||
|
}else {
|
||||||
|
resolve(res)
|
||||||
|
}
|
||||||
|
})
|
||||||
|
})
|
||||||
|
}
|
||||||
|
const getCriteres = (limit) => {
|
||||||
|
return new Promise((resolve, reject) => {
|
||||||
|
let sql = `SELECT * FROM borne_criteres`;
|
||||||
|
conn.query(sql, [limit], (err, res) => {
|
||||||
|
if(err) {
|
||||||
|
reject(err);
|
||||||
|
}else {
|
||||||
|
resolve(res)
|
||||||
|
}
|
||||||
|
})
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
const getNotesAutresFromCritere = (critere,limit) => {
|
||||||
|
return new Promise((resolve, reject) => {
|
||||||
|
let sql = `SELECT borne_notes_autre.id,date,borne_criteres.nom as critere, note, avis_id
|
||||||
|
FROM borne_notes_autre
|
||||||
|
JOIN borne_criteres ON borne_criteres.id = critere_id
|
||||||
|
WHERE borne_criteres = ?
|
||||||
|
ORDER BY borne_notes_autre.id DESC LIMIT ?;`;
|
||||||
|
conn.query(sql, [[critere, limit]], (err, res) => {
|
||||||
|
if(err) {
|
||||||
|
reject(err);
|
||||||
|
}else {
|
||||||
|
resolve(res)
|
||||||
|
}
|
||||||
|
})
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
const getnotesautresfromreview = (reviewid) => {
|
||||||
|
return new promise((resolve, reject) => {
|
||||||
|
let sql = `select borne_notes_autre.id,borne_criteres.nom as critere, note, avis_id
|
||||||
|
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, [limit], (err, res) => {
|
||||||
|
if(err) {
|
||||||
|
reject(err);
|
||||||
|
}else {
|
||||||
|
resolve(res)
|
||||||
|
}
|
||||||
|
})
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
const getStats = (interval, limit) => {
|
||||||
|
return new promise((resolve, reject) => {
|
||||||
|
let sql = `select borne_notes_autre.id,borne_criteres.nom as critere, note, avis_id
|
||||||
|
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, [limit], (err, res) => {
|
||||||
|
if(err) {
|
||||||
|
reject(err);
|
||||||
|
}else {
|
||||||
|
resolve(res)
|
||||||
|
}
|
||||||
|
})
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
getLastReview(5).then(rows => console.log(rows))
|
||||||
@@ -2,10 +2,9 @@ import { Auteur, Review } from './structures.js';
|
|||||||
import conn from '../database.js';
|
import conn from '../database.js';
|
||||||
import {getSourceId} from '../utils.js';
|
import {getSourceId} from '../utils.js';
|
||||||
|
|
||||||
//TODO: Changer la manière dont les notes autres son stoquées, avoir une table qui a la liste des notes, une table avec les enregistrements
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Ajoute un nouvel auteur de commentaire a la BDD, auteur doit être une instance de Auteur
|
* Ajoute un nouvel auteur de commentaire a la BDD
|
||||||
* @param {Auteur} author L'auteur a ajouter
|
* @param {Auteur} author L'auteur a ajouter
|
||||||
* @returns une Promise qui renvoie l'id de l'utilisateur
|
* @returns une Promise qui renvoie l'id de l'utilisateur
|
||||||
*/
|
*/
|
||||||
@@ -22,7 +21,7 @@ const addAuteur = (author) => {
|
|||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
//Ajoute une note sur un critère spécifique
|
//Ajoute une note sur un critère spécifique dans la BDD
|
||||||
const addSpecificRating = (reviewId, label, value) => {
|
const addSpecificRating = (reviewId, label, value) => {
|
||||||
return new Promise((resolve, reject) => {
|
return new Promise((resolve, reject) => {
|
||||||
const sql = "INSERT INTO borne_notes_autre(critere_id, avis_id, note) VALUES ((SELECT id FROM borne_criteres WHERE borne_criteres.nom = ?), ?, ?)"
|
const sql = "INSERT INTO borne_notes_autre(critere_id, avis_id, note) VALUES ((SELECT id FROM borne_criteres WHERE borne_criteres.nom = ?), ?, ?)"
|
||||||
@@ -37,9 +36,8 @@ const addSpecificRating = (reviewId, label, value) => {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
//Ajoute un avis a la base de donnée
|
|
||||||
/**
|
/**
|
||||||
*
|
* Ajoute un avis a la base de donnée
|
||||||
* @param {Review} review la review a ajouter
|
* @param {Review} review la review a ajouter
|
||||||
* @param {Number} authorId l'ID de l'auteur de l'avis dans la BDD
|
* @param {Number} authorId l'ID de l'auteur de l'avis dans la BDD
|
||||||
* @param {Number} sourceId l'ID de la source de l'avis dans la BDD
|
* @param {Number} sourceId l'ID de la source de l'avis dans la BDD
|
||||||
@@ -1,8 +1,8 @@
|
|||||||
import * as dotenv from 'dotenv';
|
import * as dotenv from 'dotenv';
|
||||||
import express from 'express';
|
import express from 'express';
|
||||||
import bodyParser from 'body-parser';
|
import bodyParser from 'body-parser';
|
||||||
import { addReviewFromRequest } from './borne/handler.js';
|
import { addReviewFromRequest } from './borne/post_handler.js';
|
||||||
import { addSocialReviewFromRequest } from './reseaux_sociaux/handler.js';
|
import { addSocialReviewFromRequest } from './reseaux_sociaux/post_handler.js';
|
||||||
import { startCronJobs } from './stats/update_stats.js';
|
import { startCronJobs } from './stats/update_stats.js';
|
||||||
|
|
||||||
const app = express();
|
const app = express();
|
||||||
|
|||||||
@@ -44,3 +44,7 @@ INSERT INTO STATS_AUTRES_TABLE_NAME (critere_id, note)
|
|||||||
SELECT critere_id, AVG(note) as moyenne FROM borne_notes_autre
|
SELECT critere_id, AVG(note) as moyenne FROM borne_notes_autre
|
||||||
WHERE borne_notes_autre.date > @date_limite
|
WHERE borne_notes_autre.date > @date_limite
|
||||||
GROUP BY critere_id
|
GROUP BY critere_id
|
||||||
|
|
||||||
|
/*
|
||||||
|
TODO : Calcul de la distribution d'age
|
||||||
|
*/
|
||||||
Reference in New Issue
Block a user