Syncronisation de la page d'accueil avec l'api

This commit is contained in:
Quentin Roussel
2023-03-20 21:39:45 +01:00
parent 226f8617d6
commit 4b0f2f237f
11 changed files with 274 additions and 133 deletions

View File

@@ -143,13 +143,23 @@ const getStats = (interval, limit = 10) => {
Ces fonction sont des handlers pour les routes express, elles sont appelées par les routes et renvoient les données au format JSON
*/
export const handleGetLastReviews = (req, res) => {
getLastReviews(req.query.limit)
.then((reviews) => {
res.send(reviews);
})
.catch((err) => {
res.status(500).send("Error: " + err.message);
});
if (req.query.limit) {
getLastReviews(Number(req.query.limit))
.then((reviews) => {
res.send(reviews);
})
.catch((err) => {
res.status(500).send("Error: " + err.message);
});
} else {
getLastReviews()
.then((reviews) => {
res.send(reviews);
})
.catch((err) => {
res.status(500).send("Error: " + err.message);
});
}
}
export const handleGetReview = (req, res) => {
@@ -176,13 +186,23 @@ export const handleGetCriteres = (req, res) => {
export const handleGetNotesAutres = (req, res) => {
if (req.query.critere) {
getNotesAutresFromCritere(req.query.critere, req.query.limit)
.then((notes) => {
res.send(notes);
})
.catch((err) => {
res.status(500).send("Error: " + err.message);
});
if (req.query.limit) {
getNotesAutresFromCritere(req.query.critere, Number(req.query.limit))
.then((notes) => {
res.send(notes);
})
.catch((err) => {
res.status(500).send("Error: " + err.message);
});
} else {
getNotesAutresFromCritere(req.query.critere)
.then((notes) => {
res.send(notes);
})
.catch((err) => {
res.status(500).send("Error: " + err.message);
});
}
} else if (req.query.id) {
getNotesAutresFromReview(req.query.id)
.then((notes) => {
@@ -197,11 +217,21 @@ export const handleGetNotesAutres = (req, res) => {
}
export const handleGetStats = (req, res) => {
getStats(req.query.interval, req.query.limit)
.then((stats) => {
res.send(stats);
})
.catch((err) => {
res.status(500).send("Error: " + err.message);
});
if (req.query.limit) {
getStats(req.query.interval, Number(req.query.limit))
.then((stats) => {
res.send(stats);
})
.catch((err) => {
res.status(500).send("Error: " + err.message);
});
} else {
getStats(req.query.interval)
.then((stats) => {
res.send(stats);
})
.catch((err) => {
res.status(500).send("Error: " + err.message);
});
}
}

View File

@@ -3,7 +3,7 @@ import express from 'express';
import bodyParser from 'body-parser';
import { addReviewFromRequest } from './borne/post_handler.js';
import { addSocialReviewFromRequest } from './reseaux_sociaux/post_handler.js';
import { startCronJobs } from './stats/update_stats.js';
import { startCronJobs, manualUpdateStats } from './stats/update_stats.js';
import * as borneHandler from './borne/get_handler.js';
import cors from "cors";
@@ -20,6 +20,10 @@ app.get('/borne/get_criteres', borneHandler.handleGetCriteres);
app.get('/borne/notes_autres', borneHandler.handleGetNotesAutres);
app.get('/borne/get_stats', borneHandler.handleGetStats);
app.get('/update_stats', (req, res) => {
manualUpdateStats();
res.send("OK");
})
startCronJobs();

View File

@@ -8,6 +8,10 @@ SET @date_limite = DATE_ADD(NOW(), INTERVAL -DAY_COUNT_DELAY DAY);
On récupère les notes notes moyennes sur la periode, en séparant global, borne et site
*/
SELECT @nb_avis:=COUNT(*)
FROM borne_avis
WHERE borne_avis.date > @date_limite;
SELECT @moyenne_globale:=AVG(note_principale)
FROM borne_avis
WHERE borne_avis.date > @date_limite;
@@ -38,7 +42,7 @@ SELECT @stats_a:=COUNT(*) FROM borne_avis
SET @dist_sexe = CONCAT(@stats_f,",",@stats_h,",",@stats_a);
INSERT INTO STATS_GENERAL_TABLE_NAME (moyenne_globale, moyenne_borne, moyenne_site, dist_sexe) VALUES (@moyenne_globale, @moyenne_borne, @moyenne_site, @dist_sexe);
INSERT INTO STATS_GENERAL_TABLE_NAME (moyenne_globale, nb_avis, moyenne_borne, moyenne_site, dist_sexe) VALUES (@moyenne_globale, @nb_avis, @moyenne_borne, @moyenne_site, @dist_sexe);
INSERT INTO STATS_AUTRES_TABLE_NAME (critere_id, note)
SELECT critere_id, AVG(note) as moyenne FROM borne_notes_autre

View File

@@ -66,4 +66,11 @@ export const startCronJobs = () => {
true
)
console.log("All cronjobs initiated")
}
export function manualUpdateStats() {
computeStats(1, "stats_general_jour", "stats_autres_jour");
computeStats(7, "stats_general_semaine", "stats_autres_jour");
computeStats(30, "stats_general_mois", "stats_autres_mois");
computeStats(365, "stats_general_annee", "stats_autres_annee");
}