diff --git a/code/server/borne/handler.js b/code/server/borne/handler.js index 9ceff69..506eb45 100644 --- a/code/server/borne/handler.js +++ b/code/server/borne/handler.js @@ -1,6 +1,11 @@ import { Auteur, Review } from './structures.js'; import conn from '../database.js'; +/** + * Ajoute un nouvel auteur de commentaire a la BDD, auteur doit être une instance de Auteur + * @param {Auteur} author L'auteur a ajouter + * @returns une Promise qui renvoie l'id de l'utilisateur + */ const addAuteur = (author) => { return new Promise((resolve,reject) => { const sql = "INSERT INTO auteurs (age, sexe) VALUES (?);" @@ -14,15 +19,31 @@ const addAuteur = (author) => { }) } +/** + * REnvoei l'ID dans la BDD d'une source de donnée + * @param {String} source la source dont on veut récup l'id + * @returns une promise qui renvoie l'id de la source + */ const getSourceId = (source) => { return new Promise((resolve, reject) => { const sql = "SELECT id from sources WHERE nom = ?"; conn.query(sql, [source], (err, res) => { + if(res.length == 0) { + throw new Error("Source invalide") + } resolve(res[0].id); }) }) } +//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 + * @returns une Promise qui renvoie l'id de l'avis + */ const addReview = (review, authorId, sourceId) => { return new Promise((resolve, reject) => { const sql = "INSERT INTO avis_borne (id_auteur, note_principale, notes_autre, commentaire, source_id) VALUES (?);" @@ -36,6 +57,12 @@ const addReview = (review, authorId, sourceId) => { }) } +/** + * Traite une requête POST qui contient les valeurs nécessaires pour ajouter un nouvel avis dans la BDD + * Essaie d'ajouter l'avis et l'auteur dans la BDD, sinon renvoie l'erreur avec un code 500 + * @param {*} req requete + * @param {*} res reponse + */ export const addReviewFromRequest = async (req,res) => { try { let notes_autre = {} diff --git a/code/server/borne/structures.js b/code/server/borne/structures.js index d14e122..4dcdceb 100644 --- a/code/server/borne/structures.js +++ b/code/server/borne/structures.js @@ -1,13 +1,23 @@ -const validSources = ["borne", "website"]; +//Liste des valeurs valides pour le sexe d'un utilisateur const validSexes = ["h","f","a"]; +//Classe pour représenter un avis laissé sur la borne que ce soit par l'interface web ou par un geste export class Review { + /** + * Constructeur + * @param {Auteur} auteur L'auteur de l'avis + * @param {Number} note La note principale entre 0 et 10 compris + * @param {String} source La source de l'avis, doit être une entrée dans la table soruces de la bdd + * @param {String} commentaire Le commentaire lié a l'avis + * @param {Object} notesAutre Les notes secondaires laissées, sous la forme d'un object ou les clés sont les labels de chaque notes et les valeurs sont des notes entre 0 et 10 compris + */ constructor(auteur, note, source, commentaire=null, notesAutre={}) { this.auteur = auteur; this.note = note; this.source = source; this.commentaire = commentaire; this.notesAutre = notesAutre; + //On vérifie si toutes les données sont correctes if(note < 0 || note > 10) { throw new Error("Note principale invalide"); @@ -17,20 +27,24 @@ export class Review { throw new Error("Note " + notesAutre[nom] +"/10 invalide"); } } - if(!validSources.includes(source)) { - throw new Error("Source invalide"); - } if(!auteur instanceof Auteur) { throw new Error("L'auteur est invalide"); } } } +//Classe qui représente l'auteur d'un avis export class Auteur { + /** + * Constructeur + * @param {Number} age L'age de l'auteur + * @param {String} sexe Le sexe de la personne (doit être dans l'array validSexes défini au début de ce fichier) + */ constructor(age=null, sexe=null) { this.age = age; this.sexe = sexe; + //Verification des données if(sexe != undefined && !validSexes.includes(sexe) ) { throw new Error("Sexe invalide"); } diff --git a/code/server/exemple_utilisation.py b/code/server/exemple_utilisation.py index 004d175..c65b6d1 100644 --- a/code/server/exemple_utilisation.py +++ b/code/server/exemple_utilisation.py @@ -1,12 +1,12 @@ import requests avis = { - "auteur_age": 20, - "auteur_sexe": 'f', "note": 8, "source": "borne", #Optionel + "auteur_age": 20, "notes_autre": '{"service":8,"accueil":10}', + "auteur_sexe": 'f', "commentaire": "Commentaire" }