Skip to content

Instantly share code, notes, and snippets.

@viezel
Created February 23, 2013 14:41
Show Gist options
  • Save viezel/5020004 to your computer and use it in GitHub Desktop.
Save viezel/5020004 to your computer and use it in GitHub Desktop.
custom sql migration
function executeSql (sql, data) {
if(data != undefined && data.length > 0) {
var final_sql = sql;
for(var value in data) {
final_sql = final_sql.replace(sqlSeperator, '"' + escapeSql(data[value]) + '"');
}
return db_instance.execute(final_sql);
} else {
return db_instance.execute(sql);
}
}
function updateTableSchema (schema) {
Ti.API.debug("db.js: update to schema is needed at table: " + table);
var row = executeSql("SELECT * FROM '" + table + "' LIMIT 0,1;");
var columns = "";
// parity issue: https://jira.appcelerator.org/browse/TIMOB-2945
fc = _.isFunction(rs.fieldCount) ? rs.fieldCount() : rs.fieldCount;
if(fc > 1) {
columns = getCommonColumns(schema,row,fc).join();
}
row.close();
db_instance.execute('CREATE TEMPORARY TABLE ' + table + '_backup(' + columns + ');')
db_instance.execute('INSERT INTO ' + table + '_backup SELECT ' + columns + ' FROM ' + table + ';');
db_instance.execute('DROP TABLE ' + table + ';');
db_instance.execute(createTableSql(schema));
db_instance.execute('INSERT INTO ' + table + ' (' + columns + ') SELECT ' + columns + ' FROM ' + table + '_backup;');
db_instance.execute('DROP TABLE ' + table + '_backup;');
}
function createTableSql(schema) {
if(schema[0] == "id") {
db_schema = schema.slice(1, schema.length);
} else {
db_schema = schema;
}
var sql = 'CREATE TABLE IF NOT EXISTS ' + table + ' (';
sql += "\n\tid INTEGER PRIMARY KEY";
for(var field in db_schema) {
sql += ",\n\t" + db_schema[field] + ' TEXT';
}
sql += "\n);";
return sql;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment