diff --git a/api.js b/api.js index 6dcb769918e8deeb05b57d8c7b87770824647c7b..291659ab85f8232d6b6307e54baa8e0a21e2035b 100644 --- a/api.js +++ b/api.js @@ -108,7 +108,45 @@ module.exports = (passport) => { return; }) .catch(err => { - res.status(500).send('' + err); + let method = 'get'; + let api = 'fournisseur'; + let html_code = 500; + let redirect_code = ''; + + switch (err.code) { + case 'SQLITE_CONSTRAINT': + if (err.message.includes('UNIQUE')) { + redirect_code = '&sqlite3_code=SQLITE_CONSTRAINT:UNIQUE&message=Le nom du fournisseur existe déjà .'; + html_code = 409; // Conflict + } + else if (err.message.includes('FOREIGN KEY')) { + redirect_code = '&sqlite3_code=SQLITE_CONSTRAINT:FOREIGN_KEY&message=Violation de clé étrangère.'; + html_code = 400; // Bad Request + } + break; + + case 'SQLITE_BUSY': + redirect_code = '&sqlite3_code=SQLITE_BUSY&message=La base de données est occupée.'; + html_code = 503; // Service Unavailable + break; + + case 'SQLITE_READONLY': + redirect_code = '&sqlite3_code=SQLITE_READONLY&message=La base de données est en mode lecture seule.'; + html_code = 403; // Forbidden + break; + + // Ajouter d'autres codes d'erreur SQLite pour chaque type de requête + + default: + redirect_code = '&erreur_raw=' + err; + break; + } + + res.status(html_code); + console.log(err); + + res.redirect(`/erreur/api=${api}&method=${method}&html_code=${html_code}${redirect_code}`); + res.end(); return; }); } @@ -124,7 +162,45 @@ module.exports = (passport) => { return; }) .catch(err => { - res.status(500).send('' + err); + let method = 'get'; + let api = 'fournisseur'; + let html_code = 500; + let redirect_code = ''; + + switch (err.code) { + case 'SQLITE_CONSTRAINT': + if (err.message.includes('UNIQUE')) { + redirect_code = '&sqlite3_code=SQLITE_CONSTRAINT:UNIQUE&message=Le nom du fournisseur existe déjà .'; + html_code = 409; // Conflict + } + else if (err.message.includes('FOREIGN KEY')) { + redirect_code = '&sqlite3_code=SQLITE_CONSTRAINT:FOREIGN_KEY&message=Violation de clé étrangère.'; + html_code = 400; // Bad Request + } + break; + + case 'SQLITE_BUSY': + redirect_code = '&sqlite3_code=SQLITE_BUSY&message=La base de données est occupée.'; + html_code = 503; // Service Unavailable + break; + + case 'SQLITE_READONLY': + redirect_code = '&sqlite3_code=SQLITE_READONLY&message=La base de données est en mode lecture seule.'; + html_code = 403; // Forbidden + break; + + // Ajouter d'autres codes d'erreur SQLite pour chaque type de requête + + default: + redirect_code = '&erreur_raw=' + err; + break; + } + + res.status(html_code); + console.log(err); + + res.redirect(`/erreur/api=${api}&method=${method}&html_code=${html_code}${redirect_code}`); + res.end(); return; }); } @@ -142,13 +218,54 @@ module.exports = (passport) => { req.body.email, req.body.telephone, ).then(fournisseur => { - res.set('Content-type', 'plain/text'); - res.status(200).send('fournisseur créé'); + res.status(200); // Ca aurait été plus malins de faire un form qui fait un fetchJS plutot qu'un form html qui ne prend pas de réponse... + res.redirect('/fournisseurs'); // Théo, change la route si besoin + res.end(); return; - }).catch(err => { - res.status(500).send('' + err); - return; - }); + }) + .catch(err => { + let method = 'post'; + let api = 'fournisseur'; + let html_code = 500; + let redirect_code = ''; + + switch (err.code) { + case 'SQLITE_CONSTRAINT': + if (err.message.includes('UNIQUE')) { + redirect_code = '&sqlite3_code=SQLITE_CONSTRAINT:UNIQUE&message=Le nom du fournisseur existe déjà .'; + html_code = 409; // Conflict + } + else if (err.message.includes('FOREIGN KEY')) { + redirect_code = '&sqlite3_code=SQLITE_CONSTRAINT:FOREIGN_KEY&message=Violation de clé étrangère.'; + html_code = 400; // Bad Request + } + break; + + case 'SQLITE_BUSY': + redirect_code = '&sqlite3_code=SQLITE_BUSY&message=La base de données est occupée.'; + html_code = 503; // Service Unavailable + break; + + case 'SQLITE_READONLY': + redirect_code = '&sqlite3_code=SQLITE_READONLY&message=La base de données est en mode lecture seule.'; + html_code = 403; // Forbidden + break; + + // Ajouter d'autres codes d'erreur SQLite pour chaque type de requête + + default: + redirect_code = '&erreur_raw=' + err; + break; + } + + res.status(html_code); + console.log(err); + + res.redirect(`/erreur/api=${api}&method=${method}&html_code=${html_code}${redirect_code}`); + res.end(); + return; + }); + } ); @@ -173,11 +290,50 @@ module.exports = (passport) => { req.body.email, req.body.telephone, ).then(fournisseur => { - res.set('Content-type', 'plain/text'); - res.status(200).send('fournisseur modifié'); + res.status(200); + res.redirect('/fournisseurs'); // Théo, change si besoin + res.end(); return; }).catch(err => { - res.status(500).send('' + err); + let method = 'put'; + let api = 'fournisseur'; + let html_code = 500; + let redirect_code = ''; + + switch (err.code) { + case 'SQLITE_CONSTRAINT': + if (err.message.includes('UNIQUE')) { + redirect_code = '&sqlite3_code=SQLITE_CONSTRAINT:UNIQUE&message=Le nom du fournisseur existe déjà .'; + html_code = 409; // Conflict + } + else if (err.message.includes('FOREIGN KEY')) { + redirect_code = '&sqlite3_code=SQLITE_CONSTRAINT:FOREIGN_KEY&message=Violation de clé étrangère.'; + html_code = 400; // Bad Request + } + break; + + case 'SQLITE_BUSY': + redirect_code = '&sqlite3_code=SQLITE_BUSY&message=La base de données est occupée.'; + html_code = 503; // Service Unavailable + break; + + case 'SQLITE_READONLY': + redirect_code = '&sqlite3_code=SQLITE_READONLY&message=La base de données est en mode lecture seule.'; + html_code = 403; // Forbidden + break; + + // Ajouter d'autres codes d'erreur SQLite pour chaque type de requête + + default: + redirect_code = '&erreur_raw=' + err; + break; + } + + res.status(html_code); + console.log(err); + + res.redirect(`/erreur/api=${api}&method=${method}&html_code=${html_code}${redirect_code}`); + res.end(); return; }); } @@ -190,11 +346,51 @@ module.exports = (passport) => { function (req, res) { dbHelper.fournisseur.delete(req.params.nom_fournisseur) .then(fournisseur => { - res.set('Content-type', 'plain/text'); - res.status(200).send('fournisseur supprimé'); + res.status(200); + res.redirect('/fournisseurs'); // Théo, change si besoin + res.end(); return; - }).catch(err => { - res.status(500).send('' + err); + }) + .catch(err => { + let method = 'delete'; + let api = 'fournisseur'; + let html_code = 500; + let redirect_code = ''; + + switch (err.code) { + case 'SQLITE_CONSTRAINT': + if (err.message.includes('UNIQUE')) { + redirect_code = '&sqlite3_code=SQLITE_CONSTRAINT:UNIQUE&message=Le nom du fournisseur existe déjà .'; + html_code = 409; // Conflict + } + else if (err.message.includes('FOREIGN KEY')) { + redirect_code = '&sqlite3_code=SQLITE_CONSTRAINT:FOREIGN_KEY&message=Violation de clé étrangère.'; + html_code = 400; // Bad Request + } + break; + + case 'SQLITE_BUSY': + redirect_code = '&sqlite3_code=SQLITE_BUSY&message=La base de données est occupée.'; + html_code = 503; // Service Unavailable + break; + + case 'SQLITE_READONLY': + redirect_code = '&sqlite3_code=SQLITE_READONLY&message=La base de données est en mode lecture seule.'; + html_code = 403; // Forbidden + break; + + // Ajouter d'autres codes d'erreur SQLite pour chaque type de requête + + default: + redirect_code = '&erreur_raw=' + err; + break; + } + + res.status(html_code); + console.log(err); + + res.redirect(`/erreur/api=${api}&method=${method}&html_code=${html_code}${redirect_code}`); + res.end(); return; }); } @@ -216,7 +412,45 @@ module.exports = (passport) => { return; }) .catch(err => { - res.status(500).send('' + err); + let method = 'get'; + let api = 'produit'; + let html_code = 500; + let redirect_code = ''; + + switch (err.code) { + case 'SQLITE_CONSTRAINT': + if (err.message.includes('UNIQUE')) { + redirect_code = `&sqlite3_code=SQLITE_CONSTRAINT:UNIQUE&message=Le nom du ${api} existe déjà .`; + html_code = 409; // Conflict + } + else if (err.message.includes('FOREIGN KEY')) { + redirect_code = '&sqlite3_code=SQLITE_CONSTRAINT:FOREIGN_KEY&message=Violation de clé étrangère.'; + html_code = 400; // Bad Request + } + break; + + case 'SQLITE_BUSY': + redirect_code = '&sqlite3_code=SQLITE_BUSY&message=La base de données est occupée.'; + html_code = 503; // Service Unavailable + break; + + case 'SQLITE_READONLY': + redirect_code = '&sqlite3_code=SQLITE_READONLY&message=La base de données est en mode lecture seule.'; + html_code = 403; // Forbidden + break; + + // Ajouter d'autres codes d'erreur SQLite pour chaque type de requête + + default: + redirect_code = '&erreur_raw=' + err; + break; + } + + res.status(html_code); + console.log(err); + + res.redirect(`/erreur/api=${api}&method=${method}&html_code=${html_code}${redirect_code}`); + res.end(); return; }); } @@ -232,7 +466,45 @@ module.exports = (passport) => { return; }) .catch(err => { - res.status(500).send('' + err); + let method = 'get'; + let api = 'produit'; + let html_code = 500; + let redirect_code = ''; + + switch (err.code) { + case 'SQLITE_CONSTRAINT': + if (err.message.includes('UNIQUE')) { + redirect_code = `&sqlite3_code=SQLITE_CONSTRAINT:UNIQUE&message=Le nom du ${api} existe déjà .`; + html_code = 409; // Conflict + } + else if (err.message.includes('FOREIGN KEY')) { + redirect_code = '&sqlite3_code=SQLITE_CONSTRAINT:FOREIGN_KEY&message=Violation de clé étrangère.'; + html_code = 400; // Bad Request + } + break; + + case 'SQLITE_BUSY': + redirect_code = '&sqlite3_code=SQLITE_BUSY&message=La base de données est occupée.'; + html_code = 503; // Service Unavailable + break; + + case 'SQLITE_READONLY': + redirect_code = '&sqlite3_code=SQLITE_READONLY&message=La base de données est en mode lecture seule.'; + html_code = 403; // Forbidden + break; + + // Ajouter d'autres codes d'erreur SQLite pour chaque type de requête + + default: + redirect_code = '&erreur_raw=' + err; + break; + } + + res.status(html_code); + console.log(err); + + res.redirect(`/erreur/api=${api}&method=${method}&html_code=${html_code}${redirect_code}`); + res.end(); return; }); } @@ -254,7 +526,45 @@ module.exports = (passport) => { res.status(200).send('produit créé'); return; }).catch(err => { - res.status(500).send('' + err); + let method = 'post'; + let api = 'produit'; + let html_code = 500; + let redirect_code = ''; + + switch (err.code) { + case 'SQLITE_CONSTRAINT': + if (err.message.includes('UNIQUE')) { + redirect_code = `&sqlite3_code=SQLITE_CONSTRAINT:UNIQUE&message=Le nom du ${api} existe déjà .`; + html_code = 409; // Conflict + } + else if (err.message.includes('FOREIGN KEY')) { + redirect_code = '&sqlite3_code=SQLITE_CONSTRAINT:FOREIGN_KEY&message=Violation de clé étrangère.'; + html_code = 400; // Bad Request + } + break; + + case 'SQLITE_BUSY': + redirect_code = '&sqlite3_code=SQLITE_BUSY&message=La base de données est occupée.'; + html_code = 503; // Service Unavailable + break; + + case 'SQLITE_READONLY': + redirect_code = '&sqlite3_code=SQLITE_READONLY&message=La base de données est en mode lecture seule.'; + html_code = 403; // Forbidden + break; + + // Ajouter d'autres codes d'erreur SQLite pour chaque type de requête + + default: + redirect_code = '&erreur_raw=' + err; + break; + } + + res.status(html_code); + console.log(err); + + res.redirect(`/erreur/api=${api}&method=${method}&html_code=${html_code}${redirect_code}`); + res.end(); return; }); } @@ -288,7 +598,45 @@ module.exports = (passport) => { res.status(200).send('produit modifié'); return; }).catch(err => { - res.status(500).send('' + err); + let method = 'put'; + let api = 'produit'; + let html_code = 500; + let redirect_code = ''; + + switch (err.code) { + case 'SQLITE_CONSTRAINT': + if (err.message.includes('UNIQUE')) { + redirect_code = `&sqlite3_code=SQLITE_CONSTRAINT:UNIQUE&message=Le nom du ${api} existe déjà .`; + html_code = 409; // Conflict + } + else if (err.message.includes('FOREIGN KEY')) { + redirect_code = '&sqlite3_code=SQLITE_CONSTRAINT:FOREIGN_KEY&message=Violation de clé étrangère.'; + html_code = 400; // Bad Request + } + break; + + case 'SQLITE_BUSY': + redirect_code = '&sqlite3_code=SQLITE_BUSY&message=La base de données est occupée.'; + html_code = 503; // Service Unavailable + break; + + case 'SQLITE_READONLY': + redirect_code = '&sqlite3_code=SQLITE_READONLY&message=La base de données est en mode lecture seule.'; + html_code = 403; // Forbidden + break; + + // Ajouter d'autres codes d'erreur SQLite pour chaque type de requête + + default: + redirect_code = '&erreur_raw=' + err; + break; + } + + res.status(html_code); + console.log(err); + + res.redirect(`/erreur/api=${api}&method=${method}&html_code=${html_code}${redirect_code}`); + res.end(); return; }); } @@ -303,7 +651,45 @@ module.exports = (passport) => { res.status(200).send('produit supprimé'); return; }).catch(err => { - res.status(500).send('' + err); + let method = 'delete'; + let api = 'produit'; + let html_code = 500; + let redirect_code = ''; + + switch (err.code) { + case 'SQLITE_CONSTRAINT': + if (err.message.includes('UNIQUE')) { + redirect_code = `&sqlite3_code=SQLITE_CONSTRAINT:UNIQUE&message=Le nom du ${api} existe déjà .`; + html_code = 409; // Conflict + } + else if (err.message.includes('FOREIGN KEY')) { + redirect_code = '&sqlite3_code=SQLITE_CONSTRAINT:FOREIGN_KEY&message=Violation de clé étrangère.'; + html_code = 400; // Bad Request + } + break; + + case 'SQLITE_BUSY': + redirect_code = '&sqlite3_code=SQLITE_BUSY&message=La base de données est occupée.'; + html_code = 503; // Service Unavailable + break; + + case 'SQLITE_READONLY': + redirect_code = '&sqlite3_code=SQLITE_READONLY&message=La base de données est en mode lecture seule.'; + html_code = 403; // Forbidden + break; + + // Ajouter d'autres codes d'erreur SQLite pour chaque type de requête + + default: + redirect_code = '&erreur_raw=' + err; + break; + } + + res.status(html_code); + console.log(err); + + res.redirect(`/erreur/api=${api}&method=${method}&html_code=${html_code}${redirect_code}`); + res.end(); return; }); } @@ -325,7 +711,45 @@ module.exports = (passport) => { return; }) .catch(err => { - res.status(500).send('' + err); + let method = 'get'; + let api = 'stock'; + let html_code = 500; + let redirect_code = ''; + + switch (err.code) { + case 'SQLITE_CONSTRAINT': + if (err.message.includes('UNIQUE')) { + redirect_code = `&sqlite3_code=SQLITE_CONSTRAINT:UNIQUE&message=Le nom du ${api} existe déjà .`; + html_code = 409; // Conflict + } + else if (err.message.includes('FOREIGN KEY')) { + redirect_code = '&sqlite3_code=SQLITE_CONSTRAINT:FOREIGN_KEY&message=Violation de clé étrangère.'; + html_code = 400; // Bad Request + } + break; + + case 'SQLITE_BUSY': + redirect_code = '&sqlite3_code=SQLITE_BUSY&message=La base de données est occupée.'; + html_code = 503; // Service Unavailable + break; + + case 'SQLITE_READONLY': + redirect_code = '&sqlite3_code=SQLITE_READONLY&message=La base de données est en mode lecture seule.'; + html_code = 403; // Forbidden + break; + + // Ajouter d'autres codes d'erreur SQLite pour chaque type de requête + + default: + redirect_code = '&erreur_raw=' + err; + break; + } + + res.status(html_code); + console.log(err); + + res.redirect(`/erreur/api=${api}&method=${method}&html_code=${html_code}${redirect_code}`); + res.end(); return; }); } @@ -341,7 +765,45 @@ module.exports = (passport) => { return; }) .catch(err => { - res.status(500).send('' + err); + let method = 'get'; + let api = 'stock'; + let html_code = 500; + let redirect_code = ''; + + switch (err.code) { + case 'SQLITE_CONSTRAINT': + if (err.message.includes('UNIQUE')) { + redirect_code = `&sqlite3_code=SQLITE_CONSTRAINT:UNIQUE&message=Le nom du ${api} existe déjà .`; + html_code = 409; // Conflict + } + else if (err.message.includes('FOREIGN KEY')) { + redirect_code = '&sqlite3_code=SQLITE_CONSTRAINT:FOREIGN_KEY&message=Violation de clé étrangère.'; + html_code = 400; // Bad Request + } + break; + + case 'SQLITE_BUSY': + redirect_code = '&sqlite3_code=SQLITE_BUSY&message=La base de données est occupée.'; + html_code = 503; // Service Unavailable + break; + + case 'SQLITE_READONLY': + redirect_code = '&sqlite3_code=SQLITE_READONLY&message=La base de données est en mode lecture seule.'; + html_code = 403; // Forbidden + break; + + // Ajouter d'autres codes d'erreur SQLite pour chaque type de requête + + default: + redirect_code = '&erreur_raw=' + err; + break; + } + + res.status(html_code); + console.log(err); + + res.redirect(`/erreur/api=${api}&method=${method}&html_code=${html_code}${redirect_code}`); + res.end(); return; }); } @@ -363,7 +825,45 @@ module.exports = (passport) => { res.status(200).send('stock créé'); return; }).catch(err => { - res.status(500).send('' + err); + let method = 'post'; + let api = 'stock'; + let html_code = 500; + let redirect_code = ''; + + switch (err.code) { + case 'SQLITE_CONSTRAINT': + if (err.message.includes('UNIQUE')) { + redirect_code = `&sqlite3_code=SQLITE_CONSTRAINT:UNIQUE&message=Le nom du ${api} existe déjà .`; + html_code = 409; // Conflict + } + else if (err.message.includes('FOREIGN KEY')) { + redirect_code = '&sqlite3_code=SQLITE_CONSTRAINT:FOREIGN_KEY&message=Violation de clé étrangère.'; + html_code = 400; // Bad Request + } + break; + + case 'SQLITE_BUSY': + redirect_code = '&sqlite3_code=SQLITE_BUSY&message=La base de données est occupée.'; + html_code = 503; // Service Unavailable + break; + + case 'SQLITE_READONLY': + redirect_code = '&sqlite3_code=SQLITE_READONLY&message=La base de données est en mode lecture seule.'; + html_code = 403; // Forbidden + break; + + // Ajouter d'autres codes d'erreur SQLite pour chaque type de requête + + default: + redirect_code = '&erreur_raw=' + err; + break; + } + + res.status(html_code); + console.log(err); + + res.redirect(`/erreur/api=${api}&method=${method}&html_code=${html_code}${redirect_code}`); + res.end(); return; }); } @@ -394,7 +894,45 @@ module.exports = (passport) => { res.status(200).send('stock modifié'); return; }).catch(err => { - res.status(500).send('' + err); + let method = 'put'; + let api = 'stock'; + let html_code = 500; + let redirect_code = ''; + + switch (err.code) { + case 'SQLITE_CONSTRAINT': + if (err.message.includes('UNIQUE')) { + redirect_code = `&sqlite3_code=SQLITE_CONSTRAINT:UNIQUE&message=Le nom du ${api} existe déjà .`; + html_code = 409; // Conflict + } + else if (err.message.includes('FOREIGN KEY')) { + redirect_code = '&sqlite3_code=SQLITE_CONSTRAINT:FOREIGN_KEY&message=Violation de clé étrangère.'; + html_code = 400; // Bad Request + } + break; + + case 'SQLITE_BUSY': + redirect_code = '&sqlite3_code=SQLITE_BUSY&message=La base de données est occupée.'; + html_code = 503; // Service Unavailable + break; + + case 'SQLITE_READONLY': + redirect_code = '&sqlite3_code=SQLITE_READONLY&message=La base de données est en mode lecture seule.'; + html_code = 403; // Forbidden + break; + + // Ajouter d'autres codes d'erreur SQLite pour chaque type de requête + + default: + redirect_code = '&erreur_raw=' + err; + break; + } + + res.status(html_code); + console.log(err); + + res.redirect(`/erreur/api=${api}&method=${method}&html_code=${html_code}${redirect_code}`); + res.end(); return; }); } @@ -409,7 +947,45 @@ module.exports = (passport) => { res.status(200).send('stock supprimé'); return; }).catch(err => { - res.status(500).send('' + err); + let method = 'delete'; + let api = 'stock'; + let html_code = 500; + let redirect_code = ''; + + switch (err.code) { + case 'SQLITE_CONSTRAINT': + if (err.message.includes('UNIQUE')) { + redirect_code = `&sqlite3_code=SQLITE_CONSTRAINT:UNIQUE&message=Le nom du ${api} existe déjà .`; + html_code = 409; // Conflict + } + else if (err.message.includes('FOREIGN KEY')) { + redirect_code = '&sqlite3_code=SQLITE_CONSTRAINT:FOREIGN_KEY&message=Violation de clé étrangère.'; + html_code = 400; // Bad Request + } + break; + + case 'SQLITE_BUSY': + redirect_code = '&sqlite3_code=SQLITE_BUSY&message=La base de données est occupée.'; + html_code = 503; // Service Unavailable + break; + + case 'SQLITE_READONLY': + redirect_code = '&sqlite3_code=SQLITE_READONLY&message=La base de données est en mode lecture seule.'; + html_code = 403; // Forbidden + break; + + // Ajouter d'autres codes d'erreur SQLite pour chaque type de requête + + default: + redirect_code = '&erreur_raw=' + err; + break; + } + + res.status(html_code); + console.log(err); + + res.redirect(`/erreur/api=${api}&method=${method}&html_code=${html_code}${redirect_code}`); + res.end(); return; }); } @@ -494,7 +1070,45 @@ module.exports = (passport) => { return; }) .catch(err => { - res.status(500).send('' + err); + let method = 'get'; + let api = 'produit'; + let html_code = 500; + let redirect_code = ''; + + switch (err.code) { + case 'SQLITE_CONSTRAINT': + if (err.message.includes('UNIQUE')) { + redirect_code = `&sqlite3_code=SQLITE_CONSTRAINT:UNIQUE&message=Le nom du ${api} existe déjà .`; + html_code = 409; // Conflict + } + else if (err.message.includes('FOREIGN KEY')) { + redirect_code = '&sqlite3_code=SQLITE_CONSTRAINT:FOREIGN_KEY&message=Violation de clé étrangère.'; + html_code = 400; // Bad Request + } + break; + + case 'SQLITE_BUSY': + redirect_code = '&sqlite3_code=SQLITE_BUSY&message=La base de données est occupée.'; + html_code = 503; // Service Unavailable + break; + + case 'SQLITE_READONLY': + redirect_code = '&sqlite3_code=SQLITE_READONLY&message=La base de données est en mode lecture seule.'; + html_code = 403; // Forbidden + break; + + // Ajouter d'autres codes d'erreur SQLite pour chaque type de requête + + default: + redirect_code = '&erreur_raw=' + err; + break; + } + + res.status(html_code); + console.log(err); + + res.redirect(`/erreur/api=${api}&method=${method}&html_code=${html_code}${redirect_code}`); + res.end(); return; }); } @@ -549,7 +1163,45 @@ module.exports = (passport) => { return; }) .catch(err => { - res.status(500).send('' + err); + let method = 'get'; + let api = 'produit'; + let html_code = 500; + let redirect_code = ''; + + switch (err.code) { + case 'SQLITE_CONSTRAINT': + if (err.message.includes('UNIQUE')) { + redirect_code = `&sqlite3_code=SQLITE_CONSTRAINT:UNIQUE&message=Le nom du ${api} existe déjà .`; + html_code = 409; // Conflict + } + else if (err.message.includes('FOREIGN KEY')) { + redirect_code = '&sqlite3_code=SQLITE_CONSTRAINT:FOREIGN_KEY&message=Violation de clé étrangère.'; + html_code = 400; // Bad Request + } + break; + + case 'SQLITE_BUSY': + redirect_code = '&sqlite3_code=SQLITE_BUSY&message=La base de données est occupée.'; + html_code = 503; // Service Unavailable + break; + + case 'SQLITE_READONLY': + redirect_code = '&sqlite3_code=SQLITE_READONLY&message=La base de données est en mode lecture seule.'; + html_code = 403; // Forbidden + break; + + // Ajouter d'autres codes d'erreur SQLite pour chaque type de requête + + default: + redirect_code = '&erreur_raw=' + err; + break; + } + + res.status(html_code); + console.log(err); + + res.redirect(`/erreur/api=${api}&method=${method}&html_code=${html_code}${redirect_code}`); + res.end(); return; }); } @@ -625,7 +1277,45 @@ module.exports = (passport) => { return; }) .catch(err => { - res.status(500).send('' + err); + let method = 'get'; + let api = 'fournisseur'; + let html_code = 500; + let redirect_code = ''; + + switch (err.code) { + case 'SQLITE_CONSTRAINT': + if (err.message.includes('UNIQUE')) { + redirect_code = `&sqlite3_code=SQLITE_CONSTRAINT:UNIQUE&message=Le nom du ${api} existe déjà .`; + html_code = 409; // Conflict + } + else if (err.message.includes('FOREIGN KEY')) { + redirect_code = '&sqlite3_code=SQLITE_CONSTRAINT:FOREIGN_KEY&message=Violation de clé étrangère.'; + html_code = 400; // Bad Request + } + break; + + case 'SQLITE_BUSY': + redirect_code = '&sqlite3_code=SQLITE_BUSY&message=La base de données est occupée.'; + html_code = 503; // Service Unavailable + break; + + case 'SQLITE_READONLY': + redirect_code = '&sqlite3_code=SQLITE_READONLY&message=La base de données est en mode lecture seule.'; + html_code = 403; // Forbidden + break; + + // Ajouter d'autres codes d'erreur SQLite pour chaque type de requête + + default: + redirect_code = '&erreur_raw=' + err; + break; + } + + res.status(html_code); + console.log(err); + + res.redirect(`/erreur/api=${api}&method=${method}&html_code=${html_code}${redirect_code}`); + res.end(); return; }); } @@ -681,7 +1371,45 @@ module.exports = (passport) => { return; }) .catch(err => { - res.status(500).send('' + err); + let method = 'get'; + let api = 'fournisseur'; + let html_code = 500; + let redirect_code = ''; + + switch (err.code) { + case 'SQLITE_CONSTRAINT': + if (err.message.includes('UNIQUE')) { + redirect_code = `&sqlite3_code=SQLITE_CONSTRAINT:UNIQUE&message=Le nom du ${api} existe déjà .`; + html_code = 409; // Conflict + } + else if (err.message.includes('FOREIGN KEY')) { + redirect_code = '&sqlite3_code=SQLITE_CONSTRAINT:FOREIGN_KEY&message=Violation de clé étrangère.'; + html_code = 400; // Bad Request + } + break; + + case 'SQLITE_BUSY': + redirect_code = '&sqlite3_code=SQLITE_BUSY&message=La base de données est occupée.'; + html_code = 503; // Service Unavailable + break; + + case 'SQLITE_READONLY': + redirect_code = '&sqlite3_code=SQLITE_READONLY&message=La base de données est en mode lecture seule.'; + html_code = 403; // Forbidden + break; + + // Ajouter d'autres codes d'erreur SQLite pour chaque type de requête + + default: + redirect_code = '&erreur_raw=' + err; + break; + } + + res.status(html_code); + console.log(err); + + res.redirect(`/erreur/api=${api}&method=${method}&html_code=${html_code}${redirect_code}`); + res.end(); return; }); }