mirror of
https://git.roussel.pro/telecom-paris/pact.git
synced 2026-02-09 10:30:17 +01:00
Début test interface borne
This commit is contained in:
@@ -1,85 +1,85 @@
|
||||
import { ReseauxAuteur, ReseauxReview } from './structures.js';
|
||||
import conn from '../database.js';
|
||||
import {getSourceId} from '../utils.js';
|
||||
|
||||
/**Récupérer l'id d'un auteur particulier dans la base de donnée s'il existe
|
||||
* @param {ReseauxAuteur} author L'auteur dont on veut l'id*
|
||||
* @returns Une Promise qui donne l'id de l'utilisateur ou null si il n'existe pas
|
||||
*/
|
||||
const getAuteurId = (author) => {
|
||||
return new Promise(async (resolve,reject) => {
|
||||
const sql = "SELECT id FROM reseaux_sociaux_auteurs WHERE nom_utilisateur = ? AND source_id = ? AND lien = ?;"
|
||||
let sourceId = await getSourceId(author.source);
|
||||
let query = conn.query(sql, [author.nom, sourceId, author.lien], (err, res) => {
|
||||
if(err) {
|
||||
reject(new Error(err.message))
|
||||
}else {
|
||||
if(res.length > 0) {
|
||||
resolve(res[0].id);
|
||||
}else {
|
||||
resolve(null);
|
||||
}
|
||||
}
|
||||
})
|
||||
})
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 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.source, req.body.date, req.body.note, req.body.commentaire, req.body.lien)
|
||||
let sourceId = await getSourceId(review.source);
|
||||
let authorId = await getAuteurId(author);
|
||||
if(authorId == null) {
|
||||
authorId = await addAuteur(author, sourceId);
|
||||
}
|
||||
await addReview(review, authorId, sourceId);
|
||||
res.send("success")
|
||||
}catch(err) {
|
||||
res.status(500).send("Error : " + err.message)
|
||||
}
|
||||
import { ReseauxAuteur, ReseauxReview } from './structures.js';
|
||||
import conn from '../database.js';
|
||||
import {getSourceId} from '../utils.js';
|
||||
|
||||
/**Récupérer l'id d'un auteur particulier dans la base de donnée s'il existe
|
||||
* @param {ReseauxAuteur} author L'auteur dont on veut l'id*
|
||||
* @returns Une Promise qui donne l'id de l'utilisateur ou null si il n'existe pas
|
||||
*/
|
||||
const getAuteurId = (author) => {
|
||||
return new Promise(async (resolve,reject) => {
|
||||
const sql = "SELECT id FROM reseaux_sociaux_auteurs WHERE nom_utilisateur = ? AND source_id = ? AND lien = ?;"
|
||||
let sourceId = await getSourceId(author.source);
|
||||
let query = conn.query(sql, [author.nom, sourceId, author.lien], (err, res) => {
|
||||
if(err) {
|
||||
reject(new Error(err.message))
|
||||
}else {
|
||||
if(res.length > 0) {
|
||||
resolve(res[0].id);
|
||||
}else {
|
||||
resolve(null);
|
||||
}
|
||||
}
|
||||
})
|
||||
})
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 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.source, req.body.date, req.body.note, req.body.commentaire, req.body.lien)
|
||||
let sourceId = await getSourceId(review.source);
|
||||
let authorId = await getAuteurId(author);
|
||||
if(authorId == null) {
|
||||
authorId = await addAuteur(author, sourceId);
|
||||
}
|
||||
await addReview(review, authorId, sourceId);
|
||||
res.send("success")
|
||||
}catch(err) {
|
||||
res.status(500).send("Error : " + err.message)
|
||||
}
|
||||
}
|
||||
@@ -1,39 +1,39 @@
|
||||
import { Review } from "../borne/structures.js";
|
||||
|
||||
export class ReseauxReview extends Review{
|
||||
/**
|
||||
*
|
||||
* @param {ReseauxAuteur} auteur Auteur de l'avis
|
||||
* @param {String} source La source de l'avis
|
||||
* @param {String} date La date de l'avis au format YYYY-MM-DD
|
||||
* @param {Number} note Nombre entre 0 et 10, la note attribuée
|
||||
* @param {String} commentaire Le commentaire laissé par l'utilisateur
|
||||
* @param {String} lien Lien vers le commentaire
|
||||
*/
|
||||
constructor(auteur, source, date, note=null, commentaire=null, lien=null,) {
|
||||
super(auteur,note,source,commentaire);
|
||||
this.lien = lien;
|
||||
this.date = date;
|
||||
if((typeof lien !== "string" && lien != null)) {
|
||||
throw new Error("Lien invalide");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
export class ReseauxAuteur {
|
||||
/**
|
||||
*
|
||||
* @param {String} nom Nom de l'utilisateur
|
||||
* @param {String} source Réseau social de provenance de l'utilisateur
|
||||
* @param {String} lien Lien vers le profil de l'utilisateur
|
||||
*/
|
||||
constructor(nom, source, lien=null) {
|
||||
this.nom = nom;
|
||||
this.source = source;
|
||||
this.lien = lien;
|
||||
|
||||
if((typeof this.nom !== "string") || (typeof this.source !== "string")){
|
||||
throw new Error("Auteur invalide");
|
||||
}
|
||||
}
|
||||
import { Review } from "../borne/structures.js";
|
||||
|
||||
export class ReseauxReview extends Review{
|
||||
/**
|
||||
*
|
||||
* @param {ReseauxAuteur} auteur Auteur de l'avis
|
||||
* @param {String} source La source de l'avis
|
||||
* @param {String} date La date de l'avis au format YYYY-MM-DD
|
||||
* @param {Number} note Nombre entre 0 et 10, la note attribuée
|
||||
* @param {String} commentaire Le commentaire laissé par l'utilisateur
|
||||
* @param {String} lien Lien vers le commentaire
|
||||
*/
|
||||
constructor(auteur, source, date, note=null, commentaire=null, lien=null,) {
|
||||
super(auteur,note,source,commentaire);
|
||||
this.lien = lien;
|
||||
this.date = date;
|
||||
if((typeof lien !== "string" && lien != null)) {
|
||||
throw new Error("Lien invalide");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
export class ReseauxAuteur {
|
||||
/**
|
||||
*
|
||||
* @param {String} nom Nom de l'utilisateur
|
||||
* @param {String} source Réseau social de provenance de l'utilisateur
|
||||
* @param {String} lien Lien vers le profil de l'utilisateur
|
||||
*/
|
||||
constructor(nom, source, lien=null) {
|
||||
this.nom = nom;
|
||||
this.source = source;
|
||||
this.lien = lien;
|
||||
|
||||
if((typeof this.nom !== "string") || (typeof this.source !== "string")){
|
||||
throw new Error("Auteur invalide");
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user