Skip to content

Instantly share code, notes, and snippets.

@LucasBadico
Last active February 8, 2023 20:17
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save LucasBadico/a0bf31d7a23b2433b002b3fc82a3bea8 to your computer and use it in GitHub Desktop.
Save LucasBadico/a0bf31d7a23b2433b002b3fc82a3bea8 to your computer and use it in GitHub Desktop.
Introdução a Banco de Dados - parte 1 | Encontro de Código
const express = require("express");
const fs = require("fs");
const path = require("path");
const app = express();
const port = process.env.PORT || 3000;
const dataFilePath = path.join(__dirname, "data.json");
// Função para ler os dados do arquivo JSON
const readData = () => {
try {
return JSON.parse(fs.readFileSync(dataFilePath));
} catch (error) {
return [];
}
};
// Função para salvar os dados no arquivo JSON
const writeData = (data) => {
fs.writeFileSync(dataFilePath, JSON.stringify(data));
};
// Rota de saúde
app.get("/health", (req, res) => {
res.status(200).send("Ok");
});
// Rota para criar um novo item
app.post("/item", (req, res) => {
const data = readData();
const newItem = {
id: data.length + 1,
...req.body,
};
data.push(newItem);
writeData(data);
res.status(201).send(newItem);
});
// Rota para listar todos os itens
app.get("/item", (req, res) => {
const data = readData();
res.status(200).send(data);
});
// Rota para buscar um item específico
app.get("/item/:id", (req, res) => {
const data = readData();
const item = data.find((item) => item.id === parseInt(req.params.id));
if (!item) {
return res.status(404).send("Item not found");
}
res.status(200).send(item);
});
/ Rota para atualizar um item
app.put("/item/:id", (req, res) => {
const data = readData();
const itemIndex = data.findIndex((item) => item.id === parseInt(req.params.id));
if (itemIndex === -1) {
return res.status(404).send("Item not found");
}
const updatedItem = {
id: data[itemIndex].id,
...req.body,
};
data[itemIndex] = updatedItem;
writeData(data);
res.status(200).send(updatedItem);
});
// Rota para excluir um item
app.delete("/item/:id", (req, res) => {
const data = readData();
const itemIndex = data.findIndex((item) => item.id === parseInt(req.params.id));
if (itemIndex === -1) {
return res.status(404).send("Item not found");
}
data.splice(itemIndex, 1);
writeData(data);
res.status(204).send();
});
app.listen(port, () => {
console.log(`Server listening at http://localhost:${port}`);
});
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment