UNPKG

ae-biu

Version:

Born For AE, Born To Do

98 lines (67 loc) 2.29 kB
'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'];