mysql-live-client
Version:
The client side script of mysql-live package.
78 lines (77 loc) • 2.55 kB
JavaScript
var Helper_1 = require("./Helper");
var _ = require("lodash");
var BaseCollection = (function () {
function BaseCollection(name) {
var _this = this;
this.items = [];
this.__single_item_collection__ = false;
this.loop = (function (fn) {
if (fn) {
_this.items.forEach(function (item, index) {
fn(item);
});
}
});
this.name = name;
}
Object.defineProperty(BaseCollection.prototype, "item", {
get: function () {
return this.items && this.items.length > 0 ? this.items[0] : undefined;
},
enumerable: true,
configurable: true
});
Object.defineProperty(BaseCollection.prototype, "get", {
get: function () {
if (!this.items)
return undefined;
return this.items.length > 0 && this.__single_item_collection__ === true ? this.items[0] : this.items;
},
enumerable: true,
configurable: true
});
BaseCollection.prototype.setId = function (objectToPassId, theValueOnlyId) {
objectToPassId[this.primaryKeyColumn] = theValueOnlyId;
return objectToPassId;
};
BaseCollection.prototype.getId = function (objectToGetIdOf) {
return objectToGetIdOf[this.primaryKeyColumn];
};
BaseCollection.prototype.find = function (criteria) {
return _.filter(this.items, function (_item) {
var ok = true;
Helper_1.default.forEachKey(criteria, function (key) {
if (criteria[key] !== _item[key]) {
ok = false;
}
});
return ok;
});
};
BaseCollection.prototype.findSingle = function (criteria) {
if (_.isString(criteria) || _.isNumber(criteria)) {
criteria = {};
criteria[this.primaryKeyColumn] = criteria;
}
var match;
this.items.every(function (_item) {
var ok = true;
Helper_1.default.forEachKey(criteria, function (key) {
if (criteria[key] !== _item[key]) {
ok = false;
}
});
if (ok) {
match = _item;
return false;
}
else {
return true;
}
});
return match;
};
return BaseCollection;
})();
Object.defineProperty(exports, "__esModule", { value: true });
exports.default = BaseCollection;