ae-biu
Version:
Born For AE, Born To Do
98 lines (67 loc) • 2.29 kB
JavaScript
'use strict';
Object.defineProperty(exports, "__esModule", {
value: true
});
var _jsonServer = require('json-server');
var _jsonServer2 = _interopRequireDefault(_jsonServer);
var _fs = require('fs');
var _fs2 = _interopRequireDefault(_fs);
var _path = require('path');
var _path2 = _interopRequireDefault(_path);
var _filterString = require('filter-string');
var _paths = require('../utils/paths');
var _logger = require('../utils/logger');
var _logger2 = _interopRequireDefault(_logger);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
var createServer = function createServer() {
var server = _jsonServer2.default.create();
var dbPath = _path2.default.resolve(_paths.mockDir, 'db.json');
if (!_fs2.default.existsSync(dbPath)) {
_logger2.default.error('No db.json found in project, please see docs\n');
process.exit(1);
}
var router = _jsonServer2.default.router(dbPath);
var middlewares = _jsonServer2.default.defaults();
var reqTransformMiddleware = function reqTransformMiddleware(req, res, next) {
if (req.query.$limit) {
req.query._limit = req.query.$limit;
}
if (req.query.$offset) {
var limit = req.query._limit || 10;
req.query._start = req.query.$offset;
req.query._limit = limit;
}
var filters = (0, _filterString.parse)(req.query.$filter);
filters.forEach(function (_ref) {
var key = _ref.key,
op = _ref.op,
value = _ref.value;
if (op === 'like') {
req.query[key + '_like'] = value;
}
if (op === 'gt' || op === 'ge' || op === 'le' || op === 'lt') {
req.query[key + '_' + (op[0] + 'te')] = value;
}
if (op === 'ne') {
req.query[key + '_ne'] = value;
}
if (op === 'eq') {
req.query[key] = value;
}
});
if (req.query.$orderby) {
var orderby = req.query.$orderby;
var key = orderby.split(' ')[0];
var order = orderby.split(' ') || 'asc';
req.query._sort = key;
req.query._order = order;
}
next();
};
server.use(reqTransformMiddleware);
server.use(middlewares);
server.use(router);
return server;
};
exports.default = createServer;
module.exports = exports['default'];