@yaga/cordova-plugin-spatialite
Version:
A Spatialite plugin for cordova
179 lines • 6.47 kB
JavaScript
/// <reference path="../typings/index.d.ts" />
;
/* 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