12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061 |
- .pragma library
- function getDatabase() {
- return openDatabaseSync("SettingsDB", "1.0", "Settings", 5000);
- }
- function initialize() {
- var db = getDatabase();
- db.transaction(
- function(tx) {
- // Create the settings table if it doesn't already exist
- // If the table exists, this is skipped
- tx.executeSql('CREATE TABLE IF NOT EXISTS settings(settingsName TEXT, keyName TEXT, value TEXT)');
- tx.executeSql('CREATE INDEX IF NOT EXISTS settingsName ON settings (settingsName);');
- tx.executeSql('CREATE UNIQUE INDEX IF NOT EXISTS fullKeyName ON settings (settingsName, keyName);');
- }
- );
- console.log('DB initialized');
- }
- function save(obj) {
- var db = getDatabase();
- db.transaction(
- function (tx) {
- // Clean all fields of this settings object first, so the DB is always clean from unused fields
- tx.executeSql('DELETE FROM settings WHERE settingsName=?;', [obj.objectName]);
- // Save all fields
- for (var fieldName in obj) {
- var value = JSON.stringify(obj[fieldName]);
- if (typeof value === 'undefined' || fieldName === 'objectName') {
- continue;
- }
- tx.executeSql('INSERT INTO settings (settingsName, keyName, value) VALUES (?, ?, ?);', [obj.objectName, fieldName, value]);
- console.log("Saved: " + obj.objectName + "." + fieldName + " => " + value);
- }
- }
- );
- }
- function load(obj) {
- var db = getDatabase();
- db.transaction(
- function (tx) {
- // Load fields
- for (var fieldName in obj) {
- var rs = tx.executeSql('SELECT value FROM settings WHERE settingsName=? AND keyName=?;', [obj.objectName, fieldName]);
- if (rs.rows.length > 0) {
- obj[fieldName] = JSON.parse(rs.rows.item(0).value);
- console.log("Loaded: " + obj.objectName + "." + fieldName + ". New value: " + obj[fieldName]);
- } else {
- console.log("Not loaded: " + obj.objectName + "." + fieldName + ". Current value:" + obj[fieldName]);
- }
- }
- }
- );
- }
|