Skip to content

Instantly share code, notes, and snippets.

@jervalles
Created December 9, 2019 11:08
Show Gist options
  • Save jervalles/7d6119767dc40e0be8988d5a7c523bea to your computer and use it in GitHub Desktop.
Save jervalles/7d6119767dc40e0be8988d5a7c523bea to your computer and use it in GitHub Desktop.
index
const express = require("express");
const app = express();
const port = 3000;
const connection = require("./conf");
const bodyParser = require("body-parser");
// Support JSON-encoded bodies
app.use(bodyParser.json());
// Support URL-encoded bodies
app.use(
bodyParser.urlencoded({
extended: true
})
);
app.get("/", (request, response) => {
response.send("Bienvenue sur Express");
});
// (1) GET : écoute de l'url "/api/games"
app.get("/api/games", (req, res) => {
// connection à la base de données, et sélection des employés
connection.query("SELECT * from game", (err, results) => {
if (err) {
// Si une erreur est survenue, alors on informe l'utilisateur de l'erreur
res.status(500).send("Erreur lors de la récupération des employés");
} else {
// Si tout s'est bien passé, on envoie le résultat de la requête SQL en tant que JSON.
res.json(results);
}
});
});
// (2) GET (light) : écoute de l'url "/api/games"
app.get("/api/games/name", (req, res) => {
connection.query("SELECT name from game", (err, results) => {
if (err) {
res
.status(500)
.send("Erreur lors de la récupération des id des personnages");
} else {
res.json(results);
}
});
});
// (3) : Un filtre "contient ..." dans mon exemple un "3".
app.get("/api/games/toto", (req, res) => {
connection.query(
'SELECT name from game WHERE name LIKE"%3%"',
(err, results) => {
if (err) {
res.status(500).send("Erreur lors de la récupération des jeux");
} else {
res.json(results);
}
}
);
});
// (4) : Un filtre "Commence par ..." dans mon exemple un "T".
app.get("/api/games/startt", (req, res) => {
connection.query(
'SELECT name from game WHERE name LIKE"T%"',
(err, results) => {
if (err) {
res.status(500).send("Erreur lors de la récupération des jeux");
} else {
res.json(results);
}
}
);
});
// (5) : Un filtre "Supérieur à ..." dans mon exemple suppérieur à 15.
app.get("/api/games/bestscore2", (req, res) => {
connection.query('SELECT * from game WHERE score < "11"', (err, results) => {
if (err) {
res.status(500).send("Erreur lors de la récupération des jeux");
} else {
res.json(results);
}
});
});
// (6) : GET - ascendant, descendant
app.get("/api/games/order:id", (req, res) => {
const order = req.params.id;
connection.query(
`SELECT name, score from game ORDER BY name ${order}`,
(err, results) => {
if (err) {
// Si une erreur est survenue, alors on informe l'utilisateur de l'erreur
res.status(500).send("Erreur lors de la récupération des jeux");
} else {
// Si tout s'est bien passé, on envoie le résultat de la requête SQL en tant que JSON.
res.json(results);
}
}
);
});
// (7) : POST - Sauvegarde d'une nouvelle entité
app.post("/api/games", (req, res) => {
const formData = req.body;
connection.query("INSERT INTO game SET ?", formData, (err, results) => {
if (err) {
console.log(err);
res.status(500).send("Erreur lors de la sauvegarde d'un jeu");
} else {
res.sendStatus(200);
}
});
});
// (8) : PUT - Modification d'une entité
app.put("/api/games/:id", (req, res) => {
// récupération des données envoyées
const idGame = req.params.id;
const formData = req.body;
// connection à la base de données, et insertion du film
connection.query(
"UPDATE game SET ? WHERE id = ?",
[formData, idGame],
err => {
if (err) {
// Si une erreur est survenue, alors on informe l'utilisateur de l'erreur
console.log(err);
res.status(500).send("Erreur lors de la modification d'un film");
} else {
// Si tout s'est bien passé, on envoie un statut "ok".
res.sendStatus(200);
}
}
);
});
// (9) : PUT - Toggle du booléen
app.put("/api/games/booleen/:id", (req, res) => {
const idBooleen = req.params.id;
const formData = req.body;
connection.query(
"UPDATE game SET isGood = !isGood WHERE id = ?",
[formData, idBooleen],
err => {
if (err) {
console.log(err);
res
.status(500)
.send("Erreur lors de la modification des postes des personnages");
} else {
res.sendStatus(200);
}
}
);
});
// (10) : DELETE - Suppression d'une entité
app.delete("/api/games/byebye/:id", (req, res) => {
const idByebye = req.params.id;
connection.query("DELETE FROM game WHERE id = ?", [idByebye], err => {
if (err) {
console.log(err);
res.status(500).send("Erreur lors de la suppression d'un jeu");
} else {
res.sendStatus(200);
}
});
});
// (11) : DELETE - Suppression de toutes les entités dont le booléen est false
app.delete("/api/games/delete", (req, res) => {
connection.query('DELETE FROM game WHERE isGood = "1"', (err, results) => {
if (err) {
res.status(500).send("Erreur lors de la suppression des jeux de merde");
} else {
res.json(results);
}
});
});
app.listen(port, err => {
if (err) {
throw new Error("Something bad happened...");
}
console.log(`Server is listening on ${port}`);
});
// http://localhost:3000/api/employee?name=test (for test)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment