UNPKG

taboo-cms

Version:
103 lines (91 loc) 2.55 kB
const _ = require('lodash'); const Logger = require('./Logger'); class ApiHelper { constructor() { this.config = null; } setup(config) { this.config = config; } parseRequestParams(requestParams, paramsList) { const params = {}; if (requestParams && _.isObject(requestParams)) { this.parseFilter(params, requestParams, paramsList); this.parseFields(params, requestParams, paramsList); this.parsePageParams(params, requestParams, paramsList); this.parseId(params, requestParams, paramsList); this.parseSort(params, requestParams, paramsList); } return params; } parsePageParams(params, requestParams, paramsList) { if ( [...paramsList].indexOf('page') !== -1 || [...paramsList].indexOf('limit') !== -1 || [...paramsList].indexOf('skip') !== -1 ) { params.limit = this.config.api.defaultPageSize; params.skip = 0; if (requestParams.limit) { params.limit = parseInt(requestParams.limit); } if (requestParams.skip) { params.skip = parseInt(requestParams.skip); } if (requestParams.page) { params.skip = (parseInt(requestParams.page) - 1) * params.limit; } } } parseFields(params, requestParams, paramsList) { if ([...paramsList].indexOf('fields') !== -1) { params.fields = null; if (requestParams.fields) { params.fields = requestParams.fields; } } } parseId(params, requestParams, paramsList) { if ([...paramsList].indexOf('id') !== -1) { params.id = null; if (requestParams.id) { params.id = requestParams.id; } } } parseFilter(params, requestParams, paramsList) { if ([...paramsList].indexOf('filter') !== -1) { params.filter = {}; if (requestParams.filter) { try { params.filter = JSON.parse(requestParams.filter); } catch (e) { Logger.error(e); } } } } parseSort(params, requestParams, paramsList) { if ([...paramsList].indexOf('sort') !== -1) { params.sort = null; if (requestParams.sort) { try { params.sort = JSON.parse(requestParams.sort); } catch (e) { Logger.error(e); } } } } cleanTimestamps(data) { if (data) { if (data.hasOwnProperty('createdAt')) { delete data.createdAt; } if (data.hasOwnProperty('updatedAt')) { delete data.updatedAt; } } } } module.exports = new ApiHelper();