diff --git a/migrations/20160404191651-backups-rename-filename-to-id.js b/migrations/20160404191651-backups-rename-filename-to-id.js new file mode 100644 index 000000000..f9da1ec28 --- /dev/null +++ b/migrations/20160404191651-backups-rename-filename-to-id.js @@ -0,0 +1,16 @@ +var dbm = global.dbm || require('db-migrate'); +var type = dbm.dataType; + +exports.up = function(db, callback) { + db.runSql('ALTER TABLE backups CHANGE filename id VARCHAR(128)', [], function (error) { + if (error) console.error(error); + callback(error); + }); +}; + +exports.down = function(db, callback) { + db.runSql('ALTER TABLE backups CHANGE id filename VARCHAR(128)', [], function (error) { + if (error) console.error(error); + callback(error); + }); +}; diff --git a/migrations/schema.sql b/migrations/schema.sql index 0edd8e662..7c2e6617a 100644 --- a/migrations/schema.sql +++ b/migrations/schema.sql @@ -99,7 +99,7 @@ CREATE TABLE IF NOT EXISTS appAddonConfigs( FOREIGN KEY(appId) REFERENCES apps(id)); CREATE TABLE IF NOT EXISTS backups( - filename VARCHAR(128) NOT NULL, /* s3 url, currently this is also the id */ + id VARCHAR(128) NOT NULL, creationTime TIMESTAMP, version VARCHAR(128) NOT NULL, /* app version or box version */ type VARCHAR(16) NOT NULL, /* 'box' or 'app' */ diff --git a/src/backupdb.js b/src/backupdb.js index 218d1969f..a3db6fc2e 100644 --- a/src/backupdb.js +++ b/src/backupdb.js @@ -5,7 +5,7 @@ var assert = require('assert'), DatabaseError = require('./databaseerror.js'), util = require('util'); -var BACKUPS_FIELDS = [ 'filename', 'creationTime', 'version', 'type', 'dependsOn', 'state', ]; +var BACKUPS_FIELDS = [ 'id', 'creationTime', 'version', 'type', 'dependsOn', 'state', ]; exports = module.exports = { add: add, @@ -49,7 +49,7 @@ function getByAppIdPaged(page, perPage, appId, callback) { assert.strictEqual(typeof appId, 'string'); assert.strictEqual(typeof callback, 'function'); - database.query('SELECT ' + BACKUPS_FIELDS + ' FROM backups WHERE type = ? AND state = ? AND filename LIKE ? ORDER BY creationTime DESC LIMIT ?,?', + database.query('SELECT ' + BACKUPS_FIELDS + ' FROM backups WHERE type = ? AND state = ? AND id LIKE ? ORDER BY creationTime DESC LIMIT ?,?', [ exports.BACKUP_TYPE_APP, exports.BACKUP_STATE_NORMAL, 'appbackup\\_' + appId + '\\_%', (page-1)*perPage, perPage ], function (error, results) { if (error) return callback(new DatabaseError(DatabaseError.INTERNAL_ERROR, error)); @@ -59,12 +59,12 @@ function getByAppIdPaged(page, perPage, appId, callback) { }); } -function get(filename, callback) { - assert.strictEqual(typeof filename, 'string'); +function get(id, callback) { + assert.strictEqual(typeof id, 'string'); assert.strictEqual(typeof callback, 'function'); - database.query('SELECT ' + BACKUPS_FIELDS + ' FROM backups WHERE filename = ? ORDER BY creationTime DESC', - [ filename ], function (error, result) { + database.query('SELECT ' + BACKUPS_FIELDS + ' FROM backups WHERE id = ? ORDER BY creationTime DESC', + [ id ], function (error, result) { if (error) return callback(new DatabaseError(DatabaseError.INTERNAL_ERROR, error)); if (result.length === 0) return callback(new DatabaseError(DatabaseError.NOT_FOUND)); @@ -76,7 +76,7 @@ function get(filename, callback) { function add(backup, callback) { assert(backup && typeof backup === 'object'); - assert.strictEqual(typeof backup.filename, 'string'); + assert.strictEqual(typeof backup.id, 'string'); assert.strictEqual(typeof backup.version, 'string'); assert(backup.type === exports.BACKUP_TYPE_APP || backup.type === exports.BACKUP_TYPE_BOX); assert(util.isArray(backup.dependsOn)); @@ -84,8 +84,8 @@ function add(backup, callback) { var creationTime = backup.creationTime || new Date(); // allow tests to set the time - database.query('INSERT INTO backups (filename, version, type, creationTime, state, dependsOn) VALUES (?, ?, ?, ?, ?, ?)', - [ backup.filename, backup.version, backup.type, creationTime, exports.BACKUP_STATE_NORMAL, backup.dependsOn.join(',') ], + database.query('INSERT INTO backups (id, version, type, creationTime, state, dependsOn) VALUES (?, ?, ?, ?, ?, ?)', + [ backup.id, backup.version, backup.type, creationTime, exports.BACKUP_STATE_NORMAL, backup.dependsOn.join(',') ], function (error) { if (error && error.code === 'ER_DUP_ENTRY') return callback(new DatabaseError(DatabaseError.ALREADY_EXISTS)); if (error) return callback(new DatabaseError(DatabaseError.INTERNAL_ERROR, error)); @@ -103,11 +103,11 @@ function clear(callback) { }); } -function del(filename, callback) { - assert.strictEqual(typeof filename, 'string'); +function del(id, callback) { + assert.strictEqual(typeof id, 'string'); assert.strictEqual(typeof callback, 'function'); - database.query('DELETE FROM backups WHERE filename=?', [ filename ], function (error) { + database.query('DELETE FROM backups WHERE id=?', [ id ], function (error) { if (error) return callback(new DatabaseError(DatabaseError.INTERNAL_ERROR, error)); callback(null); }); diff --git a/src/backups.js b/src/backups.js index 52fd7b111..75dcbcb43 100644 --- a/src/backups.js +++ b/src/backups.js @@ -101,7 +101,7 @@ function getBackupUrl(appBackupIds, callback) { debug('getBackupUrl: id:%s url:%s backupKey:%s', obj.id, obj.url, obj.backupKey); - backupdb.add({ filename: filename, version: config.version(), type: backupdb.BACKUP_TYPE_BOX, dependsOn: appBackupIds }, function (error) { + backupdb.add({ id: filename, version: config.version(), type: backupdb.BACKUP_TYPE_BOX, dependsOn: appBackupIds }, function (error) { if (error) return callback(new BackupsError(BackupsError.INTERNAL_ERROR, error)); callback(null, obj); @@ -136,7 +136,7 @@ function getAppBackupUrl(app, callback) { debug('getAppBackupUrl: %j', obj); - backupdb.add({ filename: dataFilename, version: app.manifest.version, type: backupdb.BACKUP_TYPE_APP, dependsOn: [ ] }, function (error) { + backupdb.add({ id: dataFilename, version: app.manifest.version, type: backupdb.BACKUP_TYPE_APP, dependsOn: [ ] }, function (error) { if (error) return callback(new BackupsError(BackupsError.INTERNAL_ERROR, error)); callback(null, obj);