@zoranwong/acc-engine.js
Version:
A javascript framework to accelerate your applicatin developement
170 lines (132 loc) • 4.8 kB
JavaScript
;
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;
};