mirror of
https://git.roussel.pro/telecom-paris/pact.git
synced 2026-02-09 10:30:17 +01:00
67 lines
2.3 KiB
JavaScript
67 lines
2.3 KiB
JavaScript
import { Auteur, Review } from './structures.js';
|
|
import conn from '../database.js';
|
|
import {getSourceId} from '../utils.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 borne_auteurs (age, sexe) VALUES (?);"
|
|
conn.query(sql, [[author.age, author.sexe]], (err, res) => {
|
|
if(err) {
|
|
reject(err)
|
|
}else {
|
|
resolve(res.insertId);
|
|
}
|
|
})
|
|
})
|
|
}
|
|
|
|
|
|
//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 borne_auteurs (id_auteur, note_principale, notes_autre, commentaire, source_id) VALUES (?);"
|
|
conn.query(sql, [[authorId, review.note, JSON.stringify(review.notesAutre), review.commentaire, sourceId]], (err, res) => {
|
|
if(err) {
|
|
reject(err)
|
|
}else {
|
|
resolve(res.insertId);
|
|
}
|
|
})
|
|
})
|
|
}
|
|
|
|
/**
|
|
* 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 = {}
|
|
try{
|
|
notes_autre = JSON.parse(req.body.notes_autre);
|
|
}catch(err){};
|
|
|
|
const author = new Auteur(req.body.auteur_age,req.body.auteur_sexe);
|
|
const review = new Review(author, req.body.note, req.body.source, req.body.commentaire, notes_autre)
|
|
let authorId = await addAuteur(author);
|
|
let sourceId = await getSourceId(review.source);
|
|
await addReview(review, authorId, sourceId );
|
|
res.send("success")
|
|
}catch(err) {
|
|
res.status(500).send("Error : " + err.message)
|
|
}
|
|
} |