liborm
Version:
ORM that use the legacy libsqlite
480 lines (441 loc) • 21.6 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.Orm = undefined;
var _getPrototypeOf = require("babel-runtime/core-js/object/get-prototype-of");
var _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf);
var _classCallCheck2 = require("babel-runtime/helpers/classCallCheck");
var _classCallCheck3 = _interopRequireDefault(_classCallCheck2);
var _createClass2 = require("babel-runtime/helpers/createClass");
var _createClass3 = _interopRequireDefault(_createClass2);
var _possibleConstructorReturn2 = require("babel-runtime/helpers/possibleConstructorReturn");
var _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);
var _inherits2 = require("babel-runtime/helpers/inherits");
var _inherits3 = _interopRequireDefault(_inherits2);
var _future = require("hjs-future/lib/future");
var _service = require("hjs-future/lib/service");
var _http = require("libhttp/lib/http");
var _helper = require("libsqlite/lib/helper");
var _entity = require("./entity");
var _selection = require("./selection");
var _command = require("./command");
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
var Orm = exports.Orm = function (_SQLiteOpenHelper) {
(0, _inherits3.default)(Orm, _SQLiteOpenHelper);
function Orm() {
var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
_ref$version = _ref.version,
version = _ref$version === undefined ? 0 : _ref$version,
_ref$newCursor = _ref.newCursor,
newCursor = _ref$newCursor === undefined ? null : _ref$newCursor,
_ref$onChange = _ref.onChange,
onChange = _ref$onChange === undefined ? null : _ref$onChange,
_ref$onConfigure = _ref.onConfigure,
onConfigure = _ref$onConfigure === undefined ? null : _ref$onConfigure,
_ref$onCreate = _ref.onCreate,
onCreate = _ref$onCreate === undefined ? null : _ref$onCreate,
_ref$onExecute = _ref.onExecute,
onExecute = _ref$onExecute === undefined ? null : _ref$onExecute,
_ref$onDowngrade = _ref.onDowngrade,
onDowngrade = _ref$onDowngrade === undefined ? null : _ref$onDowngrade,
_ref$onUpgrade = _ref.onUpgrade,
onUpgrade = _ref$onUpgrade === undefined ? null : _ref$onUpgrade,
_ref$onError = _ref.onError,
onError = _ref$onError === undefined ? null : _ref$onError,
_ref$onHandleEvent = _ref.onHandleEvent,
onHandleEvent = _ref$onHandleEvent === undefined ? null : _ref$onHandleEvent,
_ref$onOpen = _ref.onOpen,
onOpen = _ref$onOpen === undefined ? null : _ref$onOpen,
_ref$onTransaction = _ref.onTransaction,
onTransaction = _ref$onTransaction === undefined ? null : _ref$onTransaction;
(0, _classCallCheck3.default)(this, Orm);
var _this = (0, _possibleConstructorReturn3.default)(this, (Orm.__proto__ || (0, _getPrototypeOf2.default)(Orm)).call(this, {
version: version,
newCursor: newCursor,
onChange: onChange,
onConfigure: onConfigure,
onCreate: onCreate,
onExecute: onExecute,
onDowngrade: onDowngrade,
onUpgrade: onUpgrade,
onError: onError,
onHandleEvent: onHandleEvent,
onOpen: onOpen,
onTransaction: onTransaction
}));
_this.mInitialized = false;
return _this;
}
(0, _createClass3.default)(Orm, [{
key: "isModelsInitialized",
value: function isModelsInitialized() {
return this.mInitialized;
}
}, {
key: "loadModels",
value: function loadModels(path) {
var _this2 = this;
if (!this.mInitialized) {
throw new SQLException("ORM model(s) not initialized");
}
return new _service.FutureTask({
callable: new _future.Callable({
compute: function compute(onComplete) {
new _http.HTTPConnection({
url: path,
method: _http.HTTPMessage.GET,
responseType: _http.HTTPMessage.JSON,
handler: {
onHandleRequest: function onHandleRequest(event) {
var type = event.type;
var response = event.response;
if (type === "loadend") {
var models = [];
if (!response.hasError()) {
var model = null;
var jsonmodels = response.getMessageBody();
jsonmodels.forEach(function (jsonmodel, index, list) {
for (var p in jsonmodel) {
if (jsonmodel.hasOwnProperty(p)) {
model = _this2.getModelInstance(p, jsonmodel[p]);
models.push(model);
}
}
});
}
onComplete(models);
}
}
}
});
}
})
});
}
}, {
key: "newCommand",
value: function newCommand() {
var _ref2 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
_ref2$context = _ref2.context,
context = _ref2$context === undefined ? null : _ref2$context,
_ref2$timeout = _ref2.timeout,
timeout = _ref2$timeout === undefined ? -1 : _ref2$timeout,
_ref2$receiver = _ref2.receiver,
receiver = _ref2$receiver === undefined ? null : _ref2$receiver;
var command = new _command.SQLiteCommand({
database: this.getReadableDatabase(),
context: context,
timeout: timeout
});
if (receiver) {
command.addReceiver(receiver);
}
return command;
}
}, {
key: "newCommandReceiver",
value: function newCommandReceiver() {
var _ref3 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
_ref3$begin = _ref3.begin,
begin = _ref3$begin === undefined ? null : _ref3$begin,
_ref3$commit = _ref3.commit,
commit = _ref3$commit === undefined ? null : _ref3$commit,
_ref3$rollback = _ref3.rollback,
rollback = _ref3$rollback === undefined ? null : _ref3$rollback,
_ref3$handler = _ref3.handler,
handler = _ref3$handler === undefined ? null : _ref3$handler;
return new _command.SQLiteCommandReceiver({ begin: begin, commit: commit, rollback: rollback, handler: handler });
}
}, {
key: "newCursorLoader",
value: function newCursorLoader() {
var _ref4 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
id = _ref4.id,
context = _ref4.context,
listener = _ref4.listener,
executor = _ref4.executor,
_ref4$editTable = _ref4.editTable,
editTable = _ref4$editTable === undefined ? "" : _ref4$editTable,
_ref4$projection = _ref4.projection,
projection = _ref4$projection === undefined ? [] : _ref4$projection,
_ref4$selection = _ref4.selection,
selection = _ref4$selection === undefined ? "" : _ref4$selection,
_ref4$selectionArgs = _ref4.selectionArgs,
selectionArgs = _ref4$selectionArgs === undefined ? [] : _ref4$selectionArgs,
_ref4$groupBy = _ref4.groupBy,
groupBy = _ref4$groupBy === undefined ? "" : _ref4$groupBy,
_ref4$having = _ref4.having,
having = _ref4$having === undefined ? "" : _ref4$having,
_ref4$sortOrder = _ref4.sortOrder,
sortOrder = _ref4$sortOrder === undefined ? "" : _ref4$sortOrder,
_ref4$limit = _ref4.limit,
limit = _ref4$limit === undefined ? "" : _ref4$limit;
return this.getReadableDatabase().newCursorLoader({
id: id,
context: context,
listener: listener,
executor: executor,
database: this,
editTable: editTable,
projection: projection,
selection: selection,
selectionArgs: selectionArgs,
groupBy: groupBy,
having: having,
sortOrder: sortOrder,
limit: limit
});
}
}, {
key: "newDelete",
value: function newDelete() {
var _ref5 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
_ref5$model = _ref5.model,
model = _ref5$model === undefined ? null : _ref5$model,
_ref5$name = _ref5.name,
name = _ref5$name === undefined ? null : _ref5$name,
_ref5$ignoreId = _ref5.ignoreId,
ignoreId = _ref5$ignoreId === undefined ? true : _ref5$ignoreId,
_ref5$whereAlgorithm = _ref5.whereAlgorithm,
whereAlgorithm = _ref5$whereAlgorithm === undefined ? null : _ref5$whereAlgorithm;
if (!this.mInitialized) {
throw new SQLException("ORM model(s) not initialized");
}
return new _selection.Delete({ model: model, name: name, ignoreId: ignoreId, whereAlgorithm: whereAlgorithm });
}
}, {
key: "newDeleteSelections",
value: function newDeleteSelections() {
var _ref6 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
_ref6$models = _ref6.models,
models = _ref6$models === undefined ? [] : _ref6$models,
_ref6$name = _ref6.name,
name = _ref6$name === undefined ? null : _ref6$name,
_ref6$ignoreId = _ref6.ignoreId,
ignoreId = _ref6$ignoreId === undefined ? true : _ref6$ignoreId,
_ref6$whereAlgorithm = _ref6.whereAlgorithm,
whereAlgorithm = _ref6$whereAlgorithm === undefined ? null : _ref6$whereAlgorithm;
var selections = [];
if (!Array.isArray(models)) {
models = [models];
}
for (var i = 0; i < models.length; i++) {
selections[i] = this.newDelete({
name: name,
model: models[i],
ignoreId: ignoreId,
whereAlgorithm: whereAlgorithm
});
}
return selections;
}
}, {
key: "newDrop",
value: function newDrop() {
var _ref7 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
_ref7$model = _ref7.model,
model = _ref7$model === undefined ? null : _ref7$model,
_ref7$name = _ref7.name,
name = _ref7$name === undefined ? null : _ref7$name,
_ref7$ignoreId = _ref7.ignoreId,
ignoreId = _ref7$ignoreId === undefined ? true : _ref7$ignoreId;
if (!this.mInitialized) {
throw new SQLException("ORM model(s) not initialized");
}
return new _selection.Drop({ model: model, name: name, ignoreId: ignoreId });
}
}, {
key: "newDropSelections",
value: function newDropSelections() {
var _ref8 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
_ref8$models = _ref8.models,
models = _ref8$models === undefined ? [] : _ref8$models,
_ref8$name = _ref8.name,
name = _ref8$name === undefined ? null : _ref8$name,
_ref8$ignoreId = _ref8.ignoreId,
ignoreId = _ref8$ignoreId === undefined ? true : _ref8$ignoreId;
var selections = [];
if (!Array.isArray(models)) {
models = [models];
}
for (var i = 0; i < models.length; i++) {
selections[i] = this.newDrop({
name: name,
model: models[i],
ignoreId: ignoreId
});
}
return selections;
}
}, {
key: "newInsert",
value: function newInsert() {
var _ref9 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
_ref9$model = _ref9.model,
model = _ref9$model === undefined ? null : _ref9$model,
_ref9$name = _ref9.name,
name = _ref9$name === undefined ? null : _ref9$name,
_ref9$ignoreId = _ref9.ignoreId,
ignoreId = _ref9$ignoreId === undefined ? true : _ref9$ignoreId,
_ref9$conflictAlgorit = _ref9.conflictAlgorithm,
conflictAlgorithm = _ref9$conflictAlgorit === undefined ? 0 : _ref9$conflictAlgorit;
if (!this.mInitialized) {
throw new SQLException("ORM model(s) not initialized");
}
return new _selection.Insert({ model: model, name: name, ignoreId: ignoreId, conflictAlgorithm: conflictAlgorithm });
}
}, {
key: "newInsertSelections",
value: function newInsertSelections() {
var _ref10 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
_ref10$models = _ref10.models,
models = _ref10$models === undefined ? [] : _ref10$models,
_ref10$name = _ref10.name,
name = _ref10$name === undefined ? null : _ref10$name,
_ref10$ignoreId = _ref10.ignoreId,
ignoreId = _ref10$ignoreId === undefined ? true : _ref10$ignoreId,
_ref10$conflictAlgori = _ref10.conflictAlgorithm,
conflictAlgorithm = _ref10$conflictAlgori === undefined ? 0 : _ref10$conflictAlgori;
var selections = [];
if (!Array.isArray(models)) {
models = [models];
}
for (var i = 0; i < models.length; i++) {
selections[i] = this.newInsert({
name: name,
model: models[i],
ignoreId: ignoreId,
conflictAlgorithm: conflictAlgorithm
});
}
return selections;
}
}, {
key: "newModelClass",
value: function newModelClass(table) {
if (!this.mInitialized) {
throw new SQLException("ORM model(s) not initialized");
}
return _entity.Entity.getTableClass(table);
}
}, {
key: "newModelInstance",
value: function newModelInstance(table, object) {
if (!this.mInitialized) {
throw new SQLException("ORM model(s) not initialized");
}
var model = _entity.Entity.getTableInstance(table);
if (object) {
model.setProperties(object);
}
return model;
}
}, {
key: "newModels",
value: function newModels() {
if (!this.mInitialized) {
_entity.Entity.generate();
this.mInitialized = true;
}
return this;
}
}, {
key: "newSelect",
value: function newSelect() {
var _ref11 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
_ref11$model = _ref11.model,
model = _ref11$model === undefined ? null : _ref11$model,
_ref11$name = _ref11.name,
name = _ref11$name === undefined ? null : _ref11$name,
_ref11$ignoreId = _ref11.ignoreId,
ignoreId = _ref11$ignoreId === undefined ? true : _ref11$ignoreId,
_ref11$selectAlgorith = _ref11.selectAlgorithm,
selectAlgorithm = _ref11$selectAlgorith === undefined ? "*" : _ref11$selectAlgorith,
_ref11$whereAlgorithm = _ref11.whereAlgorithm,
whereAlgorithm = _ref11$whereAlgorithm === undefined ? null : _ref11$whereAlgorithm;
if (!this.mInitialized) {
throw new SQLException("ORM model(s) not initialized");
}
return new _selection.Select({ model: model, name: name, ignoreId: ignoreId, selectAlgorithm: selectAlgorithm, whereAlgorithm: whereAlgorithm });
}
}, {
key: "newSelectSelections",
value: function newSelectSelections() {
var _ref12 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
_ref12$models = _ref12.models,
models = _ref12$models === undefined ? [] : _ref12$models,
_ref12$name = _ref12.name,
name = _ref12$name === undefined ? null : _ref12$name,
_ref12$ignoreId = _ref12.ignoreId,
ignoreId = _ref12$ignoreId === undefined ? true : _ref12$ignoreId,
_ref12$selectAlgorith = _ref12.selectAlgorithm,
selectAlgorithm = _ref12$selectAlgorith === undefined ? "*" : _ref12$selectAlgorith,
_ref12$whereAlgorithm = _ref12.whereAlgorithm,
whereAlgorithm = _ref12$whereAlgorithm === undefined ? null : _ref12$whereAlgorithm;
var selections = [];
if (!Array.isArray(models)) {
models = [models];
}
for (var i = 0; i < models.length; i++) {
selections[i] = this.newSelect({
name: name,
model: models[i],
ignoreId: ignoreId,
selectAlgorithm: selectAlgorithm,
whereAlgorithm: whereAlgorithm
});
}
return selections;
}
}, {
key: "newUpdate",
value: function newUpdate() {
var _ref13 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
_ref13$model = _ref13.model,
model = _ref13$model === undefined ? null : _ref13$model,
_ref13$name = _ref13.name,
name = _ref13$name === undefined ? null : _ref13$name,
_ref13$ignoreId = _ref13.ignoreId,
ignoreId = _ref13$ignoreId === undefined ? true : _ref13$ignoreId,
_ref13$updateAlgorith = _ref13.updateAlgorithm,
updateAlgorithm = _ref13$updateAlgorith === undefined ? "*" : _ref13$updateAlgorith,
_ref13$whereAlgorithm = _ref13.whereAlgorithm,
whereAlgorithm = _ref13$whereAlgorithm === undefined ? null : _ref13$whereAlgorithm;
if (!this.mInitialized) {
throw new SQLException("ORM model(s) not initialized");
}
return new _selection.Update({ model: model, name: name, ignoreId: ignoreId, updateAlgorithm: updateAlgorithm, whereAlgorithm: whereAlgorithm });
}
}, {
key: "newUpdateSelections",
value: function newUpdateSelections() {
var _ref14 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
_ref14$models = _ref14.models,
models = _ref14$models === undefined ? [] : _ref14$models,
_ref14$name = _ref14.name,
name = _ref14$name === undefined ? null : _ref14$name,
_ref14$ignoreId = _ref14.ignoreId,
ignoreId = _ref14$ignoreId === undefined ? true : _ref14$ignoreId,
_ref14$updateAlgorith = _ref14.updateAlgorithm,
updateAlgorithm = _ref14$updateAlgorith === undefined ? "*" : _ref14$updateAlgorith,
_ref14$whereAlgorithm = _ref14.whereAlgorithm,
whereAlgorithm = _ref14$whereAlgorithm === undefined ? null : _ref14$whereAlgorithm;
var selections = [];
if (!Array.isArray(models)) {
models = [models];
}
for (var i = 0; i < models.length; i++) {
selections[i] = this.newUpdate({
name: name,
model: models[i],
ignoreId: ignoreId,
updateAlgorithm: updateAlgorithm,
whereAlgorithm: whereAlgorithm
});
}
return selections;
}
}]);
return Orm;
}(_helper.SQLiteOpenHelper); /** @babel */