diff --git a/code/server/borne/get_handler.js b/code/server/borne/get_handler.js new file mode 100644 index 0000000..a4e97b1 --- /dev/null +++ b/code/server/borne/get_handler.js @@ -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)) \ No newline at end of file diff --git a/code/server/borne/handler.js b/code/server/borne/post_handler.js similarity index 89% rename from code/server/borne/handler.js rename to code/server/borne/post_handler.js index 906214f..5469b51 100644 --- a/code/server/borne/handler.js +++ b/code/server/borne/post_handler.js @@ -2,10 +2,9 @@ import { Auteur, Review } from './structures.js'; import conn from '../database.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 * @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) => { 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 = ?), ?, ?)" @@ -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 {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 diff --git a/code/server/index.js b/code/server/index.js index bc79d8a..7abfecd 100644 --- a/code/server/index.js +++ b/code/server/index.js @@ -1,8 +1,8 @@ import * as dotenv from 'dotenv'; import express from 'express'; import bodyParser from 'body-parser'; -import { addReviewFromRequest } from './borne/handler.js'; -import { addSocialReviewFromRequest } from './reseaux_sociaux/handler.js'; +import { addReviewFromRequest } from './borne/post_handler.js'; +import { addSocialReviewFromRequest } from './reseaux_sociaux/post_handler.js'; import { startCronJobs } from './stats/update_stats.js'; const app = express(); diff --git a/code/server/reseaux_sociaux/handler.js b/code/server/reseaux_sociaux/post_handler.js similarity index 100% rename from code/server/reseaux_sociaux/handler.js rename to code/server/reseaux_sociaux/post_handler.js diff --git a/code/server/stats/update_request.sql b/code/server/stats/update_request.sql index c88ddb3..0dcd64e 100644 --- a/code/server/stats/update_request.sql +++ b/code/server/stats/update_request.sql @@ -43,4 +43,8 @@ INSERT INTO STATS_GENERAL_TABLE_NAME (moyenne_globale, moyenne_borne, moyenne_si INSERT INTO STATS_AUTRES_TABLE_NAME (critere_id, note) SELECT critere_id, AVG(note) as moyenne FROM borne_notes_autre WHERE borne_notes_autre.date > @date_limite - GROUP BY critere_id \ No newline at end of file + GROUP BY critere_id + +/* +TODO : Calcul de la distribution d'age +*/ \ No newline at end of file