UNPKG

backendless-console-sdk

Version:

Backendless Console SDK for Node.js and browser

67 lines (66 loc) 2.94 kB
"use strict"; 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 }; }); }); } }; };