const http = require('http');
const express = require('express');
const app = express();
const edr = require('edr');
const resourceHub = new edr.ResourceHub({
baseUrl: '/api'
});
resourceHub
.registerResource({
baseUrl: '/friends',
name: 'friends'
})
.addRoute({
path: '/',
method: 'get',
alias: 'getAll'
})
.addRoute({
path: '/',
method: 'post',
alias: 'create'
})
.addRoute({
path: '/:id'.,
method: 'get',
alias: 'getById'
})
.addRoute({
path: '/:id'.,
method: 'put',
alias: 'updateById'
})
.addRoute({
path: '/:id'.,
method: 'delete',
alias: 'removeById'
});
app.use(edr({
resourceHub
}));
app.use((req, res) => {
res
.status(404)
.json({
message: 'Resource not found'
});
});
http
.createServer(app)
.listen(3030);
resourceHub
.on('friends', (match) => {
match
.on('id', (req, res, move, id) => {
Friends.getById(id, move);
})
.on('getAll', (req, res, move) => {
Friends.getAll(move);
})
.on('create', (req, res, move) => {
var friend = new Friend(req.body);
friend.create(move);
})
.on('getById', (req, res, move, friend) => {
move(null, friend.toJSON());
})
.on('updateById', (req, res, move, friend) => {
friend
.update(req.body)
.save(move);
})
.on('removeById', (req, res, move, friend) => {
friend
.remove(move);
})
.on('done', (req, res, next, result) => {
var response = handleFinalResponseSomehow(result);
res
.status(response.code)
.json(response);
})
.on('error', (err, req, res, next) {
next(handlerErrorSomehow(err));
});
});