ajout routes sur express

Liaison entre les handler et les routes
This commit is contained in:
2023-01-02 20:54:03 +01:00
parent 7e6fc30742
commit 77f2cea46c
3 changed files with 99 additions and 5 deletions

View File

@@ -4,3 +4,28 @@
2. Ouvrir un terminal et aller dans ce dossier (code/server) et tapper `npm install` pour installer les pacakges nécessaires 2. Ouvrir un terminal et aller dans ce dossier (code/server) et tapper `npm install` pour installer les pacakges nécessaires
3. copier le fichier `.env_template` et le nommer `.env` et remplir les variables (cela est fait pour le pas mettre les mots de passes sur le gitlab, faites attention de ne jamais commit le fichier .env !!) 3. copier le fichier `.env_template` et le nommer `.env` et remplir les variables (cela est fait pour le pas mettre les mots de passes sur le gitlab, faites attention de ne jamais commit le fichier .env !!)
4. pour lancer le serveur faire `node index.js` 4. pour lancer le serveur faire `node index.js`
# Utilisation
## Routes GET :
- `/get_last_reviews?limit=LIM` : renvoie les LIM derniers avis sur la borne
- `/get_review?id=ID` : renvoie les infos sur l'avis d'in ID
- `/get_criteres` : renvoie les criteres de notations valide pour les notes autres
- `/notes_autres?critere=CRIT&limit=LIM` : renvoie les LIM dernières notes sur le critère CRIT
- `/notes_autres?id=ID&limit=LIM` : renvoie toutes les notes spécifiques liées à l'avis ID
## Routes POST
- `/add_review` : Ajoute une review et un auteur, paramètres POST :
* [OBLIGATOIRE] `note` : note principale de la review entre 0 et 10 compris
* [OBLIGATOIRE] `source` : nom de la source de l'avis, doit être `borne` ou `website` pour resp la borne et le site
* `auteur_age` : age de l'auteur
* `auteur_sexe` : sexe de l'auteur (valeurs valide 'f', 'h', 'a')
* `commentaire` : Commentaire laissé avec l'avis
* `notes autres` : sous la forme
```json
{
"critere1": 8,
"critere2": 2,
"critere3": 0
}
```

View File

@@ -7,7 +7,7 @@ import conn from '../database.js';
*/ */
const getLastReviews = (limit=10) => { 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 borne_avis.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
JOIN sources ON sources.id = source_id JOIN sources ON sources.id = source_id
JOIN borne_auteurs ON borne_auteurs.id = id_auteur JOIN borne_auteurs ON borne_auteurs.id = id_auteur
@@ -134,11 +134,72 @@ const getStats = (interval, limit=10) => {
}) })
} }
/*^ /*
* TODO: FOnction gerer requêtes get
* /get_last_review?limit=LIM * /get_last_review?limit=LIM
* /get_review?id=ID * /get_review?id=ID
* /get_criteres * /get_criteres
* /notes_autres?critere=CRIT&limit=LIM * /notes_autres?critere=CRIT&limit=LIM
* /notes_autres?id=ID&limit=LIM * /notes_autres?id=ID&limit=LIM
*/ */
export const handleGetLastReviews = (req, res) => {
getLastReviews(req.query.limit)
.then((reviews) => {
res.send(reviews);
})
.catch((err) => {
res.status(500).send("Error: " + err.message);
});
}
export const handleGetReview = (req, res) => {
getReviewFromId(req.query.id)
.then((review) => {
res.send(review);
})
.catch((err) => {
res.status(500).send("Error: " + err.message);
});
}
export const handleGetCriteres = (req, res) => {
getCriteres()
.then((criteres) => {
res.send(criteres);
})
.catch((err) => {
res.status(500).send("Error: " + err.message);
});
}
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);
});
}else if(req.query.id) {
getNotesAutresFromReview(req.query.id)
.then((notes) => {
res.send(notes);
})
.catch((err) => {
res.status(500).send("Error: " + err.message);
});
}else {
res.status(500).send("Error: no critere or id specified");
}
}
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);
});
}

View File

@@ -4,6 +4,7 @@ import bodyParser from 'body-parser';
import { addReviewFromRequest } from './borne/post_handler.js'; import { addReviewFromRequest } from './borne/post_handler.js';
import { addSocialReviewFromRequest } from './reseaux_sociaux/post_handler.js'; import { addSocialReviewFromRequest } from './reseaux_sociaux/post_handler.js';
import { startCronJobs } from './stats/update_stats.js'; import { startCronJobs } from './stats/update_stats.js';
import * as borneHandler from './borne/get_handler.js';
const app = express(); const app = express();
@@ -12,6 +13,13 @@ dotenv.config()
app.post('/add_review', (req,res) => addReviewFromRequest(req,res)); app.post('/add_review', (req,res) => addReviewFromRequest(req,res));
app.post('/add_social_review', (req,res) => addSocialReviewFromRequest(req,res)); app.post('/add_social_review', (req,res) => addSocialReviewFromRequest(req,res));
app.get('/get_last_reviews', borneHandler.handleGetLastReviews);
app.get('/get_review', borneHandler.handleGetReview);
app.get('/get_criteres', borneHandler.handleGetCriteres);
app.get('/notes_autres', borneHandler.handleGetNotesAutres);
app.get('/get_stats', borneHandler.handleGetStats);
startCronJobs(); startCronJobs();
app.listen(process.env.PORT, () => { app.listen(process.env.PORT, () => {