/** * @private */ Ext.define('Ext.device.storage.HTML5.Database', { requires: ["Ext.device.storage.HTML5.SQLStatement"], db: null, constructor: function(config) { this.db = window.openDatabase(config.name, config.version, config.displayName, config.size); }, getVersion: function() { if (this.db) { return this.db.version; } // <debug> Ext.Logger.warn('Database has not been opened before calling function #getVersion'); // </debug> return null; }, /** * @param {String/String[]/Object/Object[]/SQLStatement/SQLStatement[]} sql SQL Command to run with optional arguments and callbacks * @param {Function} success callback for successful transaction * @param {Function} failure callback for failed transaction */ transaction: function(sql, success, failure) { if (!this.db) { // <debug> Ext.Logger.warn('Database has not been opened before calling function #transaction'); // </debug> return; } if (!Ext.isArray(sql)) { sql = [sql]; } var txFn = function(tx) { Ext.each(sql, function(sqlStatement) { if (Ext.isString(sqlStatement)) { tx.executeSql(sqlStatement); }else if(Ext.isObject(sqlStatement)) { tx.executeSql(sqlStatement.sql, sqlStatement.arguments, sqlStatement.success, sqlStatement.failure); } }); }; this.db.transaction(txFn, failure, success); } });