jaydata
Version:
Cross-platform HTML5 data-management, JavaScript Language Query (JSLQ) support for OData, SQLite, WebSQL, IndexedDB, YQL and Facebook (packaged for Node.JS)
81 lines (72 loc) • 3.26 kB
JavaScript
;
var _core = require('../../../../core.js');
var _core2 = _interopRequireDefault(_core);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
_core2.default.Class.define('$data.dbClient.openDatabaseClient.OpenDbCommand', _core2.default.dbClient.DbCommand, null, {
constructor: function constructor(con, queryStr, params) {
this.query = queryStr;
this.connection = con;
this.parameters = params;
},
executeNonQuery: function executeNonQuery(callback, tran, isWrite) {
callback = _core2.default.PromiseHandlerBase.createCallbackSettings(callback);
this.exec(this.query, this.parameters, callback.success, callback.error, tran, isWrite);
},
executeQuery: function executeQuery(callback, tran, isWrite) {
callback = _core2.default.PromiseHandlerBase.createCallbackSettings(callback);
this.exec(this.query, this.parameters, callback.success, callback.error, tran, isWrite);
},
exec: function exec(query, parameters, callback, errorhandler, transaction, isWrite) {
// suspicious code
/*if (console) {
//console.log(query);
}*/
this.connection.open({
error: errorhandler,
success: function success(tran) {
var single = false;
if (!(query instanceof Array)) {
single = true;
query = [query];
parameters = [parameters];
}
var results = [];
var remainingCommands = 0;
function decClb() {
if (--remainingCommands == 0) {
callback(single ? results[0] : results, transaction);
}
}
query.forEach(function (q, i) {
remainingCommands++;
if (q) {
tran.executeSql(query[i], parameters[i], function (trx, result) {
var r = { rows: [] };
try {
r.insertId = result.insertId;
} catch (e) {}
if (typeof r.insertId !== 'number') {
// If insertId is present, no rows are returned
r.rowsAffected = result.rowsAffected;
var maxItem = result.rows.length;
for (var j = 0; j < maxItem; j++) {
r.rows.push(result.rows.item(j));
}
}
results[i] = r;
decClb(trx);
}, function (trx, err) {
var _q = q;
var _i = i;
if (errorhandler) errorhandler(err);
return true;
});
} else {
results[i] = null;
decClb();
}
});
}
}, transaction, isWrite);
}
}, null);