Files
frontend-bootcamp/server/index.js
2019-02-25 12:12:11 -08:00

65 lines
1.2 KiB
JavaScript

// @ts-check
const fs = require('fs');
const express = require('express');
const bodyParser = require('body-parser');
const cors = require('cors');
const app = express();
const store = {
/** @type {any} */
read() {
if (fs.existsSync('tmp.json')) {
store.todos = JSON.parse(fs.readFileSync('tmp.json').toString());
} else {
store.todos = {};
}
return store.todos;
},
save() {
fs.writeFileSync('tmp.json', JSON.stringify(store.todos));
},
todos: {}
};
app.use(bodyParser.json());
app.use(cors());
app.get('/todos', (req, res) => {
res.json(store.read());
});
app.put('/todos/:id', (req, res) => {
store.todos[req.params.id] = req.body;
store.save();
res.json('ok');
});
app.post('/todos/:id', (req, res) => {
store.todos[req.params.id] = req.body;
store.save();
res.json('ok');
});
app.delete('/todos/:id', (req, res) => {
delete store.todos[req.params.id];
store.save();
res.json('ok');
});
app.post('/todos', (req, res) => {
store.todos = req.body;
store.save();
res.json('ok');
});
app.get('/hello', (req, res) => {
res.send('world');
});
app.listen(process.env.NODE_ENV === 'production' ? undefined : 3000, () => {
console.log('Listening at http://localhost:3000');
});