Files
mina-sidor-fa-web/mock-api/dafa-web/server.js
Erik Tiekstra 5a97ebff78 feat(employee-list): Added search functionality using API. (TV-221)
Squashed commit of the following:

commit 4b93fcf4b8442a30c8d56cf8364f710b2d24c4e2
Author: Erik Tiekstra <erik.tiekstra@arbetsformedlingen.se>
Date:   Mon Jun 14 15:50:17 2021 +0200

    Added fullName inside mock-api and filtering using api
2021-06-15 09:16:15 +02:00

68 lines
1.7 KiB
JavaScript

import jsonServer from 'json-server';
const server = jsonServer.create();
const router = jsonServer.router('api.json');
const middlewares = jsonServer.defaults();
server.use(middlewares);
server.use(
jsonServer.rewriter({
'/api/*': '/$1',
'*sort=services*': '$1sort=services[0].name$2',
'*sort=organizations*': '$1sort=organizations[0].address.city$2',
'/employee*search=*': '/employee$1fullName_like=$2',
'/employee*': '/employees$1',
'/participants': '/participants?_embed=employees',
'/participant/:id': '/participants/:id?_embed=employees',
'*page=*': '$1_page=$2',
'*limit=*': '$1_limit=$2',
'*sort=*': '$1_sort=$2',
'*order=*': '$1_order=$2',
'/get-token?code=auth_code_from_CIAM_with_all_permissions': '/getTokenFullAccess',
})
);
router.render = (req, res) => {
// all paths except getToken requires Authorization header.
if (!req._parsedUrl.pathname.includes('getToken') && !req.headers.authorization) {
return res.status(401).jsonp({ error: 'No valid access-token' });
}
const params = new URLSearchParams(req._parsedUrl.query);
// Add createdAt to the body
if (req.originalMethod === 'POST') {
req.body.createdAt = Date.now();
}
res.jsonp({
data: res.locals.data,
...appendMetaData(params, res),
});
};
server.use(router);
server.listen(8000, () => {
console.info('JSON Server is running');
});
function appendMetaData(params, res) {
if (params.has('_page')) {
const limit = +params.get('_limit');
const page = +params.get('_page');
const count = res.get('X-Total-Count');
const totalPages = Math.ceil(count / limit);
return {
meta: {
count,
limit,
page,
totalPages,
},
};
}
return null;
}