UNPKG

@yaga/cordova-plugin-spatialite

Version:

A Spatialite plugin for cordova

179 lines 6.47 kB
/// <reference path="../typings/index.d.ts" /> "use strict"; /* tslint:disable:no-empty no-any */ var emptyFn = function () { var args = []; for (var _i = 0; _i < arguments.length; _i++) { args[_i - 0] = arguments[_i]; } }; /* tslint:enable:no-empty no-any */ exports.CORDOVA_MODULE_NAME = 'SpatialitePlugin'; var databases = {}; /** * @class * @property {number} length - Number of rows */ // var SpatialiteRows = (function () { function SpatialiteRows(data) { this.length = data.length; this.rows = data; } /** * Get a row by its number * @memberOf SpatialiteRows * @param {number} i - Number of the row * @returns {IRow} */ SpatialiteRows.prototype.item = function (i) { return this.rows[i]; }; return SpatialiteRows; }()); exports.SpatialiteRows = SpatialiteRows; /** * @class * @property {number} rowsAffected - Number of rows that was affected by the call * @property {number} insertId - ID of the insert * @property {SpatialiteRows} rows - Rows as object */ var SpatialiteResultSet = (function () { function SpatialiteResultSet(data) { this.rowsAffected = data.rowsAffected; this.insertId = data.insertId; this.rows = new SpatialiteRows(data.rows); } return SpatialiteResultSet; }()); exports.SpatialiteResultSet = SpatialiteResultSet; /** * @class * @property {string} name - Name of the database * @property {string} path - Path to the database */ var SpatialiteTransaction = (function () { function SpatialiteTransaction(name, path) { this.name = name; } /** * Run a SQL statement on this transaction * @memberOf SpatialiteTransaction * @param {string} sql - The statement you want to run. Questions marks will be replaced with the data in bindings * @param {string[]} binding - Bindings for the sql statement * @param {SpatialiteTransaction~successCallback} successCallback * @param {SpatialiteTransaction~errorCallback} errorCallback */ SpatialiteTransaction.prototype.executeSql = function (sql, binding, successCallback, errorCallback) { var _this = this; /* tslint:disable:no-any */ cordova.exec(function (results) { successCallback(_this, new SpatialiteResultSet(results)); }, function (error) { console.error('fail: ' + error); errorCallback(_this, new Error(error)); }, exports.CORDOVA_MODULE_NAME, 'executeSql', [this.name, sql]); /* tslint:enable:no-any */ }; return SpatialiteTransaction; }()); exports.SpatialiteTransaction = SpatialiteTransaction; /** * @class * @property {string} name - Name of the database * @property {string} path - Path to the database * @property {boolean} connected - Is the database already connected? */ var SpatialiteDatabase = (function () { function SpatialiteDatabase(opts) { this.connected = false; this.name = opts.name; this.path = opts.path; } /** * Open or create a Database * @static * @memberOf SpatialiteDatabase * @param {ISpatialiteDatabaseOptions} options * @param {SpatialiteDatabase~successCallback} successCallback * @param {SpatialiteDatabase~errorCallback} errorCallback * @returns {SpatialiteDatabase} */ SpatialiteDatabase.openDatabase = function (options, successCallback, errorCallback) { 'use strict'; if (successCallback === void 0) { successCallback = emptyFn; } if (errorCallback === void 0) { errorCallback = emptyFn; } var db, name = options.name; if (databases[name]) { if (typeof successCallback === 'function') { successCallback(databases[name]); } return databases[name]; } db = new SpatialiteDatabase(options); db.open(successCallback, errorCallback); databases[name] = db; return db; }; /** * Delete a Database * @static * @memberOf SpatialiteDatabase * @param opts * @param successCallback * @param {SpatialiteDatabase~errorCallback} errorCallback */ SpatialiteDatabase.deleteDatabase = function (opts, successCallback, errorCallback) { cordova.exec(function () { successCallback('OK'); }, function (data) { errorCallback(new Error(data)); }, exports.CORDOVA_MODULE_NAME, 'deleteDatabase', [opts.name, opts.path]); }; /** * Create a transaction object * @param {SpatialiteDatabase~transactionCallback} callback */ SpatialiteDatabase.prototype.transaction = function (callback) { callback(new SpatialiteTransaction(this.name)); }; /** * Execute a SQL statement * @memberOf SpatialiteDatabase * @param {string} sql - The statement you want to run. Questions marks will be replaced with the data in bindings * @param {string[]} binding - Bindings for the sql statement * @param {SpatialiteDatabase~successStatementCallback} successCallback * @param {SpatialiteDatabase~errorCallback} errorCallback */ SpatialiteDatabase.prototype.executeSql = function (sql, binding, successCallback, errorCallback) { this.transaction(function (tx) { /* tslint:disable:no-shadowed-variable align */ tx.executeSql(sql, binding, function (tx, result) { successCallback(result); }, function (tx, error) { errorCallback(error); }); /* tslint:enable:no-shadowed-variable align */ }); }; /** * Open the database that was defined in this object * @memberOf SpatialiteDatabase * @param {SpatialiteDatabase~successOpenCallback} successCallback * @param {SpatialiteDatabase~errorCallback} errorCallback */ SpatialiteDatabase.prototype.open = function (successCallback, errorCallback) { var _this = this; cordova.exec(function () { _this.connected = true; successCallback(_this); }, function (data) { _this.connected = false; errorCallback(new Error(data)); }, exports.CORDOVA_MODULE_NAME, 'openDatabase', [this.name, this.path]); }; return SpatialiteDatabase; }()); exports.SpatialiteDatabase = SpatialiteDatabase; window.spatialitePlugin = SpatialiteDatabase; //# sourceMappingURL=websql-api.js.map