backendless-console-sdk
Version:
Backendless Console SDK for Node.js and browser
67 lines (66 loc) • 2.94 kB
JavaScript
;
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
Object.defineProperty(exports, "__esModule", {
value: true
});
exports["default"] = void 0;
var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
var _omit2 = _interopRequireDefault(require("lodash/omit"));
var NON_COUNTS_PARAMS = ['offset', 'pagesize', 'pageSize', 'sortBy', 'sortDirection'];
var DEFAULT_CACHE_TTL = 30000;
var trimQueryParams = function trimQueryParams(path, paramsToTrim) {
var pathTokens = path.split('?');
var url = pathTokens[0];
var params = pathTokens[1] || '';
var paramsTokens = params.split('&');
var filteredParams = paramsToTrim && paramsToTrim.length ? paramsTokens.filter(function (param) {
return paramsToTrim.indexOf(param.split('=')[0]) === -1;
}) : [];
var filteredQuery = filteredParams.join('&');
return filteredQuery ? "".concat(url, "?").concat(filteredQuery) : url;
};
var getCountPath = function getCountPath(path) {
path = trimQueryParams(path, NON_COUNTS_PARAMS);
var pathTokens = path.split('?');
if (pathTokens[0] && pathTokens[0].endsWith('/')) {
pathTokens[0] = pathTokens[0].slice(0, -1);
}
return "".concat(pathTokens[0], "/count").concat(pathTokens[1] ? '?' + pathTokens[1] : '');
};
var getDataReqURL = function getDataReqURL(dataReq) {
var url = dataReq.path;
if (url && url.endsWith('/')) {
url = url.slice(0, -1);
}
return url;
};
var _default = exports["default"] = function _default(req) {
return {
get: function get(path, cacheTags) {
return req.get(getCountPath(path)).useCache().cacheTags(cacheTags);
},
getFor: function getFor(dataReq) {
var _req$get$useCache;
var cacheTTL = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : DEFAULT_CACHE_TTL;
var url = getDataReqURL(dataReq);
return (_req$get$useCache = req.get(url + '/count').useCache(cacheTTL)).cacheTags.apply(_req$get$useCache, (0, _toConsumableArray2["default"])(dataReq.tags || [])).query((0, _omit2["default"])(dataReq.queryParams, NON_COUNTS_PARAMS));
},
getViaPostFor: function getViaPostFor(dataReq) {
var _req$post$useCache;
var cacheTTL = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : DEFAULT_CACHE_TTL;
var url = getDataReqURL(dataReq);
return (_req$post$useCache = req.post(url + '/count', (0, _omit2["default"])(dataReq.body, NON_COUNTS_PARAMS)).useCache(cacheTTL)).cacheTags.apply(_req$post$useCache, (0, _toConsumableArray2["default"])(dataReq.tags || []));
},
getWithData: function getWithData(dataReq, cacheTTL) {
var _this = this;
return dataReq.then(function (data) {
return _this.getFor(dataReq, cacheTTL).then(function (totalRows) {
return {
data: data,
totalRows: totalRows
};
});
});
}
};
};