import { ReseauxAuteur, ReseauxReview } from './structures.js'; import conn from '../database.js'; import {getSourceId} from '../utils.js'; /** * ajoute un auteur de commentaire sur les réseaux sociaux a la bdd * @param {ReseauxAuteur} author * @returns Une Promise qui donne l'id de l'utilisateur */ const addAuteur = (author, sourceId) => { return new Promise((resolve,reject) => { const sql = "INSERT INTO reseaux_sociaux_auteurs (nom_utilisateur, source_id, lien) VALUES (?);" conn.query(sql, [[author.nom,sourceId, author.lien]], (err, res) => { if(err) { reject(new Error(err.message)) }else { resolve(res.insertId); } }) }) } /** * Ajoute un avis dans la BDD * @param {ReseauxReview} review L'avis a ajouter * @param {Number} authorId ID de l'auteur dans la bdd * @param {Number} sourceId ID Du réseau social source dans la bdd * @returns une Promise qui renvoie l'ID de la review */ const addReview = (review, authorId, sourceId) => { return new Promise((resolve, reject) => { const sql = "INSERT INTO reseaux_sociaux_avis (source_id, note, commentaire, auteur_id, lien_source, date) VALUES (?);" conn.query(sql, [[sourceId, review.note, review.commentaire, authorId, review.lien, review.date]], (err, res) => { if(err) { reject(new Error(err.message)) }else { resolve(res.insertId); } }) }) } /** * Traite une requête POST pour ajouter un avis récupéré sur les réseaux sociaux * @param {*} req * @param {*} res */ export const addSocialReviewFromRequest = async (req,res) => { try { const author = new ReseauxAuteur(req.body.auteur_nom, req.body.source, req.body.auteur_lien); const review = new ReseauxReview(author,req.body.note, req.body.source, req.body.date, req.body.commentaire, req.body.lien) let sourceId = await getSourceId(review.source); let authorId = await addAuteur(author, sourceId); console.log(review.note) await addReview(review, authorId, sourceId); res.send("success") }catch(err) { res.status(500).send("Error : " + err.message) } }