mirror of
https://git.roussel.pro/telecom-paris/pact.git
synced 2026-02-09 10:30:17 +01:00
reorganisation des dossiers
This commit is contained in:
55
code/server/borne/handler.js
Normal file
55
code/server/borne/handler.js
Normal 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)
|
||||
}
|
||||
}
|
||||
41
code/server/borne/structures.js
Normal file
41
code/server/borne/structures.js
Normal 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");
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user