reorganisation des dossiers

This commit is contained in:
2022-12-24 16:26:06 +01:00
parent beb7e26ce7
commit 68a936075d
3 changed files with 2 additions and 3 deletions

View File

@@ -0,0 +1,55 @@
import { Auteur, Review } from './structures.js';
import conn from '../database.js';
const addAuteur = (author) => {
return new Promise((resolve,reject) => {
const sql = "INSERT INTO auteurs (age, sexe) VALUES (?);"
conn.query(sql, [[author.age, author.sexe]], (err, res) => {
if(err) {
reject(err)
}else {
resolve(res.insertId);
}
})
})
}
const getSourceId = (source) => {
return new Promise((resolve, reject) => {
const sql = "SELECT id from sources WHERE nom = ?";
conn.query(sql, [source], (err, res) => {
resolve(res[0].id);
})
})
}
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 (?);"
conn.query(sql, [[authorId, review.note, JSON.stringify(review.notesAutre), review.commentaire, sourceId]], (err, res) => {
if(err) {
reject(err)
}else {
resolve(res.insertId);
}
})
})
}
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)
}
}

View File

@@ -0,0 +1,41 @@
const validSources = ["borne", "website"];
const validSexes = ["h","f","a"];
export class Review {
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");
}
for(let nom in notesAutre) {
if(notesAutre[nom] < 0 || notesAutre[nom] > 10) {
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");
}
}
}
export class Auteur {
constructor(age=null, sexe=null) {
this.age = age;
this.sexe = sexe;
if(sexe != undefined && !validSexes.includes(sexe) ) {
throw new Error("Sexe invalide");
}
if(age != undefined && age <= 0) {
throw new Error("Age invalide");
}
}
}