UNPKG

liborm

Version:

ORM that use the legacy libsqlite

480 lines (441 loc) 21.6 kB
"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 */