angular.module('focaSqlite', []) .factory('focaSqliteService', [ function() { var dataBase; var baseReady; function error(error) { console.error(error); } return { openDataBase: function() { var db = null; db = window.sqlitePlugin.openDatabase({ name: 'foca.distribuidor', location: 'default', }); dataBase = db; var queryCreate = "CREATE TABLE IF NOT EXISTS querys " + "(route text," + "type text," + "body text," + "response text," + "PRIMARY KEY(route, body, type))"; dataBase.transaction(function(tx) { tx.executeSql(queryCreate); baseReady = true; }, error); }, updateQuery: function(route, body, type, response, success) { function callQuery() { if (baseReady) { var query = 'INSERT OR REPLACE INTO querys (route, type, body, response)' + "VALUES('" + route + "'" + ", '" + type + "'" + ", '" + body + "'" + ", '" + response + "')"; dataBase.transaction(function(tx) { tx.executeSql(query); }, error, success) } else { setTimeout(function() { callQuery(); }, 1000) } } callQuery(); }, getQuery: function(route, body, type, success) { function callQuery() { if(baseReady) { var query= "SELECT * FROM querys " + "WHERE route = '" + route + "'" + " and body = '" + body + "'" + " and type = '" + type + "'"; dataBase.executeSql(query, [], function(data) { success(data.rows.item(0).response); }, error); } else { setTimeout(function() { callQuery(); }, 1000); } } callQuery(); } } } ]);