mirror of
https://git.roussel.pro/telecom-paris/pact.git
synced 2026-02-09 02:20:17 +01:00
ajout de commentaires
This commit is contained in:
@@ -1,6 +1,11 @@
|
|||||||
import { Auteur, Review } from './structures.js';
|
import { Auteur, Review } from './structures.js';
|
||||||
import conn from '../database.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) => {
|
const addAuteur = (author) => {
|
||||||
return new Promise((resolve,reject) => {
|
return new Promise((resolve,reject) => {
|
||||||
const sql = "INSERT INTO auteurs (age, sexe) VALUES (?);"
|
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) => {
|
const getSourceId = (source) => {
|
||||||
return new Promise((resolve, reject) => {
|
return new Promise((resolve, reject) => {
|
||||||
const sql = "SELECT id from sources WHERE nom = ?";
|
const sql = "SELECT id from sources WHERE nom = ?";
|
||||||
conn.query(sql, [source], (err, res) => {
|
conn.query(sql, [source], (err, res) => {
|
||||||
|
if(res.length == 0) {
|
||||||
|
throw new Error("Source invalide")
|
||||||
|
}
|
||||||
resolve(res[0].id);
|
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) => {
|
const addReview = (review, authorId, sourceId) => {
|
||||||
return new Promise((resolve, reject) => {
|
return new Promise((resolve, reject) => {
|
||||||
const sql = "INSERT INTO avis_borne (id_auteur, note_principale, notes_autre, commentaire, source_id) VALUES (?);"
|
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) => {
|
export const addReviewFromRequest = async (req,res) => {
|
||||||
try {
|
try {
|
||||||
let notes_autre = {}
|
let notes_autre = {}
|
||||||
|
|||||||
@@ -1,13 +1,23 @@
|
|||||||
const validSources = ["borne", "website"];
|
//Liste des valeurs valides pour le sexe d'un utilisateur
|
||||||
const validSexes = ["h","f","a"];
|
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 {
|
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={}) {
|
constructor(auteur, note, source, commentaire=null, notesAutre={}) {
|
||||||
this.auteur = auteur;
|
this.auteur = auteur;
|
||||||
this.note = note;
|
this.note = note;
|
||||||
this.source = source;
|
this.source = source;
|
||||||
this.commentaire = commentaire;
|
this.commentaire = commentaire;
|
||||||
this.notesAutre = notesAutre;
|
this.notesAutre = notesAutre;
|
||||||
|
|
||||||
//On vérifie si toutes les données sont correctes
|
//On vérifie si toutes les données sont correctes
|
||||||
if(note < 0 || note > 10) {
|
if(note < 0 || note > 10) {
|
||||||
throw new Error("Note principale invalide");
|
throw new Error("Note principale invalide");
|
||||||
@@ -17,20 +27,24 @@ export class Review {
|
|||||||
throw new Error("Note " + notesAutre[nom] +"/10 invalide");
|
throw new Error("Note " + notesAutre[nom] +"/10 invalide");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if(!validSources.includes(source)) {
|
|
||||||
throw new Error("Source invalide");
|
|
||||||
}
|
|
||||||
if(!auteur instanceof Auteur) {
|
if(!auteur instanceof Auteur) {
|
||||||
throw new Error("L'auteur est invalide");
|
throw new Error("L'auteur est invalide");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//Classe qui représente l'auteur d'un avis
|
||||||
export class Auteur {
|
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) {
|
constructor(age=null, sexe=null) {
|
||||||
this.age = age;
|
this.age = age;
|
||||||
this.sexe = sexe;
|
this.sexe = sexe;
|
||||||
|
|
||||||
|
//Verification des données
|
||||||
if(sexe != undefined && !validSexes.includes(sexe) ) {
|
if(sexe != undefined && !validSexes.includes(sexe) ) {
|
||||||
throw new Error("Sexe invalide");
|
throw new Error("Sexe invalide");
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,12 +1,12 @@
|
|||||||
import requests
|
import requests
|
||||||
|
|
||||||
avis = {
|
avis = {
|
||||||
"auteur_age": 20,
|
|
||||||
"auteur_sexe": 'f',
|
|
||||||
"note": 8,
|
"note": 8,
|
||||||
"source": "borne",
|
"source": "borne",
|
||||||
#Optionel
|
#Optionel
|
||||||
|
"auteur_age": 20,
|
||||||
"notes_autre": '{"service":8,"accueil":10}',
|
"notes_autre": '{"service":8,"accueil":10}',
|
||||||
|
"auteur_sexe": 'f',
|
||||||
"commentaire": "Commentaire"
|
"commentaire": "Commentaire"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user