Fil rouge
const express = require('express');
const app = express();
const port = 3000;
const connection = require('./conf');
const bodyParser = require('body-parser');
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({
extended: true
}));
// GET - Récupération de l'ensemble des données de ta table
app.get('/api/v1/wizard', (req, res) => {
connection.query('SELECT * FROM wizard', (err, results) => {
if (err) {
res.status(500).send("Retrieving wizard table error");
} else { res.json(results); }
});
});
// GET (light) - Récupération de quelques champs spécifiques (id, names, dates, etc...)
app.get('/api/v1/wizard/id', (req, res) => {
connection.query('SELECT id FROM wizard', (err, results) => {
if (err) {
res.status(500).send("Retrieving wizard's ids error");
} else { res.json(results); }
});
});
app.get('/api/v1/wizard/firstname', (req, results) => {
connection.query("SELECT firstname FROM wizard", (err, res) => {
if (err) {
res.status(500).send("Retrieving wizard's firstnames error");
} else { res.json(results); }
});
});
app.get('/api/v1/wizard/lastname', (req, results) => {
connection.query("SELECT lastname FROM wizard", (err, res) => {
if (err) {
res.status(500).send("Retrieving wizard's lastnames error");
} else { res.json(results); }
});
});
// GET - Récupération d'un ensemble de données en fonction de certains filtres :
// Une route par type de filtre
// Un filtre "contient ..." (ex: nom contenant la chaîne de caractère 'wcs')
app.get('/api/v1/wizard/names_countains', (req, results) => {
connection.query('SELECT lastname, firstname FROM wizard WHERE lastname LIKE "%or%" ', (err, results) => {
if (err) {
res.status(500).send("Filter_Countains error");
} else { res.json(results); }
});
});
// Un filtre "commence par ..." (ex: nom commençant par 'campus')
app.get('/api/v1/wizard/namesbeginswith/:search', (req, results) => {
let search = req.params.search;
connection.query(`SELECT * FROM wizard WHERE lastname LIKE '${search}%'`, (err, results) => {
if (err) {
res.status(500).send("Filter_Begins_With error");
} else { res.json(results); }
});
});
// Un filtre "supérieur à ..." (ex: date supérieure à 18/10/2010)
app.get('/api/v1/wizard/filteridsuperiorat/:number', (req, results) => {
connection.query(`SELECT * from wizard WHERE id > '${number}%'`, (err, results) => {
if (err) {
res.status(500).send("Filter_Id_Superior_At error");
} else { res.json(results); }
});
});
// GET - Récupération de données ordonnées (ascendant, descendant)
// L'ordre sera passé en tant que paramètre de la route
app.get('/api/v1/wizard/sort/:id', (req, res) => {
const wizardId = req.params.id;
if(wizardId === 'asc'){
connection.query('SELECT * FROM user ORDER BY id ASC', (err, results) => { res.json(results); })
} else if (wizardId === 'desc') {
connection.query('SELECT * FROM user ORDER BY id DESC', (err, results) => { res.json(results); })
}});
// POST - Sauvegarde d'une nouvelle entité
app.post('/api/v1/wizard/', (req, res) => {
const formData = req.body;
connection.query('INSERT INTO wizard SET ?', formData, (err, results) => {
if (err) {
res.status(500).send("New wizard save error");
} else { res.sendStatus(200); }
});
});
// PUT - Modification d'une entité
app.put('/api/v1/wizard/:id', (req, res) => {
const wizardId = req.params.id;
const formData = req.body;
connection.query('UPDATE user SET ? WHERE id = ?', [formData, wizardId], err => {
if (err) {
res.status(500).send("Wizard change error");
} else { res.sendStatus(200); }
});
});
// PUT - Toggle du booléen
app.put('/api/v1/wizard/toggle/:id', (req, res) => {
const wizardId = req.params.id;
connection.query('UPDATE wizard SET isAlive = !isAlive WHERE id = ?', wizardId, err => {
if (err) {
res.status(500).send("Toggle change error");
} else { res.sendStatus(200);}
});
});
// DELETE - Suppression d'une entité
app.delete('/api/v1/wizard/delete/:id', (req, res) => {
const wizardId = req.params.id;
connection.query('DELETE FROM wizard WHERE id = ?', wizardId, err => {
if (err) {
res.status(500).send("Wizard erasing error");
} else { res.sendStatus(200); }
});
});
// DELETE - Suppression de toutes les entités dont le booléen est false
app.delete('/api/v1/wizard/delete/notalive', (req, res) => {
connection.query('DELETE FROM wizard WHERE isAlive=0, err => {
if (err) {
res.status(500).send("Wizards not alive erasing error);
} else { res.sendStatus(200); }
});
});
app.listen(port, (err) => {
if (err) { throw new Error('Something bad happened...'); }
console.log(`Server is listening on ${port}`);
});