UNPKG

@zoranwong/acc-engine.js

Version:

A javascript framework to accelerate your applicatin developement

170 lines (132 loc) 4.8 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); Object.defineProperty(exports, "__esModule", { value: true }); exports["default"] = void 0; var _newArrowCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/newArrowCheck")); var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck")); var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass")); var _classPrivateFieldLooseBase2 = _interopRequireDefault(require("@babel/runtime/helpers/classPrivateFieldLooseBase")); var _classPrivateFieldLooseKey2 = _interopRequireDefault(require("@babel/runtime/helpers/classPrivateFieldLooseKey")); var _underscore = require("underscore"); var _where = (0, _classPrivateFieldLooseKey2["default"])("where"); var Collection = /*#__PURE__*/function () { function Collection() { var items = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : []; (0, _classCallCheck2["default"])(this, Collection); Object.defineProperty(this, _where, { value: _where2 }); this.items = []; if (items instanceof Collection) { items = items.items; } if (items) this.items = items; } (0, _createClass2["default"])(Collection, [{ key: "where", value: function where() { var _classPrivateFieldLoo; return new Collection((_classPrivateFieldLoo = (0, _classPrivateFieldLooseBase2["default"])(this, _where))[_where].apply(_classPrivateFieldLoo, arguments)); } }, { key: "find", value: function find() { var _classPrivateFieldLoo2; for (var _len = arguments.length, params = new Array(_len), _key = 0; _key < _len; _key++) { params[_key] = arguments[_key]; } if (params.length === 1) { params.push('id'); } return (0, _underscore.first)((_classPrivateFieldLoo2 = (0, _classPrivateFieldLooseBase2["default"])(this, _where))[_where].apply(_classPrivateFieldLoo2, params)); } }, { key: "first", value: function first() { var _classPrivateFieldLoo3; return (0, _underscore.first)((_classPrivateFieldLoo3 = (0, _classPrivateFieldLooseBase2["default"])(this, _where))[_where].apply(_classPrivateFieldLoo3, arguments)); } }, { key: "concat", value: function concat() { var _this = this; for (var _len2 = arguments.length, params = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) { params[_key2] = arguments[_key2]; } params.forEach(function (param) { (0, _newArrowCheck2["default"])(this, _this); if (!(0, _underscore.isArray)(param)) { param = [param]; } this.items.concat(param); }.bind(this)); } }, { key: "push", value: function push() { for (var _len3 = arguments.length, params = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) { params[_key3] = arguments[_key3]; } this.items.concat(params); } }]); return Collection; }(); exports["default"] = Collection; var _where2 = function _where2() { var _this2 = this; for (var _len4 = arguments.length, params = new Array(_len4), _key4 = 0; _key4 < _len4; _key4++) { params[_key4] = arguments[_key4]; } if (params.length === 1) { var callback = params[0]; if ((0, _underscore.isFunction)(callback)) { return (0, _underscore.filter)(this.items, callback); } } else if (params.length === 2) { var key = params[0], value = params[1]; return (0, _underscore.filter)(this.items, function (model) { (0, _newArrowCheck2["default"])(this, _this2); return model[key] === value; }.bind(this)); } else if (params.length === 3) { var _key5 = params[0], operator = params[1], _value = params[2]; return (0, _underscore.filter)(this.items, function (model) { (0, _newArrowCheck2["default"])(this, _this2); var result = false; switch (operator) { case '=': result = model[_key5] === _value; break; case '>': result = model[_key5] > _value; break; case '>=': result = model[_key5] >= _value; break; case '<': result = model[_key5] < _value; break; case '<=': result = model[_key5] <= _value; break; case 'between': result = model[_key5] >= _value[0] && model[_key5] < _value[1]; break; case 'in': result = _value.includes(model[_key5]); break; case 'not in': result = !_value.includes(model[_key5]); break; } return result; }.bind(this)); } return this.items; };