CLiNTPELiX
6/16/2019 - 4:25 PM

Fil rouge

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}`);
});