UNPKG

rollun-ts-datastore

Version:

rollun-datastore written in TS

127 lines (107 loc) 3.99 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.queryNodeHandlerFactory = exports.logicalNodesHandlersFactory = void 0; var _lodash = _interopRequireDefault(require("lodash")); var _AbstractScalarNode = _interopRequireDefault(require("rollun-ts-rql/dist/nodes/scalarNodes/AbstractScalarNode")); var _AbstractArrayNode = _interopRequireDefault(require("rollun-ts-rql/dist/nodes/arrayNodes/AbstractArrayNode")); var _And = _interopRequireDefault(require("rollun-ts-rql/dist/nodes/logicalNodes/And")); var _Or = _interopRequireDefault(require("rollun-ts-rql/dist/nodes/logicalNodes/Or")); var _AggregateFunctionNode = _interopRequireDefault(require("rollun-ts-rql/dist/nodes/aggregateNodes/AggregateFunctionNode")); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } var logicalNodesHandlersFactory = function logicalNodesHandlersFactory(node) { if (node instanceof _And["default"]) { return function (handlers) { return function (item) { return handlers.every(function (handler) { return handler(item); }); }; }; } else if (node instanceof _Or["default"]) { return function (handlers) { return function (item) { return handlers.some(function (handler) { return handler(item); }); }; }; } else { return function () { return function () { return true; }; }; } }; exports.logicalNodesHandlersFactory = logicalNodesHandlersFactory; var nodesMap = { eq: function eq(a, b) { return a === b; }, ne: function ne(a, b) { return a !== b; }, le: function le(a, b) { return a <= b; }, lt: function lt(a, b) { return a < b; }, ge: function ge(a, b) { return a >= b; }, gt: function gt(a, b) { return a > b; }, like: function like(a, b) { var aType = _typeof(a); var bType = _typeof(b); if (aType === 'string' && bType === 'string') { return a.includes(b); } if (aType === 'number' && bType === 'number') { return a === b; } return +a === +b; }, alike: function alike(a, b) { return _lodash["default"].isString(a) && _lodash["default"].isString(b) ? a.toLowerCase().includes(b.toLowerCase()) : false; }, contains: function contains(a, b) { return _lodash["default"].isString(a) && _lodash["default"].isString(b) ? a.toLowerCase().indexOf(b.toLowerCase()) > -1 : false; }, "in": function _in(item, values) { return values.includes(item); }, out: function out(item, values) { return !values.includes(item); } }; var queryNodeHandlerFactory = function queryNodeHandlerFactory(node) { if (node instanceof _AbstractScalarNode["default"]) { return function (item) { if (!item.hasOwnProperty(node.field)) { throw new Error("There is not ".concat(node.field, " field in list")); } var handler = nodesMap[node.name]; return handler ? handler(item[node.field], node.value) : true; }; } else if (node instanceof _AbstractArrayNode["default"]) { return function (item) { if (!item.hasOwnProperty(node.field)) { throw new Error("There is not ".concat(node.field, " field in list")); } var handler = nodesMap[node.name]; return handler ? handler(item[node.field], node.values) : true; }; } else if (node instanceof _AggregateFunctionNode["default"]) { console.log('f node', node); } return function () { return true; }; }; exports.queryNodeHandlerFactory = queryNodeHandlerFactory;