diff --git a/src/backupdb.js b/src/backupdb.js index 1962589bf..566d68345 100644 --- a/src/backupdb.js +++ b/src/backupdb.js @@ -10,7 +10,10 @@ var BACKUPS_FIELDS = [ 'id', 'creationTime', 'version', 'type', 'dependsOn', 'st exports = module.exports = { add: add, - getPaged: getPaged, + + getByTypeAndStatePaged: getByTypeAndStatePaged, + getByTypePaged: getByTypePaged, + get: get, del: del, update: update, @@ -35,14 +38,31 @@ function postProcess(result) { delete result.restoreConfigJson; } -function getPaged(type, page, perPage, callback) { +function getByTypeAndStatePaged(type, state, page, perPage, callback) { assert(type === exports.BACKUP_TYPE_APP || type === exports.BACKUP_TYPE_BOX); + assert.strictEqual(typeof state, 'string'); assert(typeof page === 'number' && page > 0); assert(typeof perPage === 'number' && perPage > 0); assert.strictEqual(typeof callback, 'function'); database.query('SELECT ' + BACKUPS_FIELDS + ' FROM backups WHERE type = ? AND state = ? ORDER BY creationTime DESC LIMIT ?,?', - [ type, exports.BACKUP_STATE_NORMAL, (page-1)*perPage, perPage ], function (error, results) { + [ type, state, (page-1)*perPage, perPage ], function (error, results) { + if (error) return callback(new DatabaseError(DatabaseError.INTERNAL_ERROR, error)); + + results.forEach(function (result) { postProcess(result); }); + + callback(null, results); + }); +} + +function getByTypePaged(type, page, perPage, callback) { + assert(type === exports.BACKUP_TYPE_APP || type === exports.BACKUP_TYPE_BOX); + assert(typeof page === 'number' && page > 0); + assert(typeof perPage === 'number' && perPage > 0); + assert.strictEqual(typeof callback, 'function'); + + database.query('SELECT ' + BACKUPS_FIELDS + ' FROM backups WHERE type = ? ORDER BY creationTime DESC LIMIT ?,?', + [ type, (page-1)*perPage, perPage ], function (error, results) { if (error) return callback(new DatabaseError(DatabaseError.INTERNAL_ERROR, error)); results.forEach(function (result) { postProcess(result); }); diff --git a/src/backups.js b/src/backups.js index 1e30355e9..8140202cd 100644 --- a/src/backups.js +++ b/src/backups.js @@ -5,7 +5,7 @@ exports = module.exports = { testConfig: testConfig, - getPaged: getPaged, + getByStatePaged: getByStatePaged, getByAppIdPaged: getByAppIdPaged, getRestoreConfig: getRestoreConfig, @@ -106,12 +106,13 @@ function testConfig(backupConfig, callback) { api(backupConfig.provider).testConfig(backupConfig, callback); } -function getPaged(page, perPage, callback) { +function getByStatePaged(state, page, perPage, callback) { + assert.strictEqual(typeof state, 'string'); assert(typeof page === 'number' && page > 0); assert(typeof perPage === 'number' && perPage > 0); assert.strictEqual(typeof callback, 'function'); - backupdb.getPaged(backupdb.BACKUP_TYPE_BOX, page, perPage, function (error, results) { + backupdb.getByTypeAndStatePaged(backupdb.BACKUP_TYPE_BOX, state, page, perPage, function (error, results) { if (error) return callback(new BackupsError(BackupsError.INTERNAL_ERROR, error)); callback(null, results); @@ -400,7 +401,7 @@ function ensureBackup(auditSource, callback) { debug('ensureBackup: %j', auditSource); - getPaged(1, 1, function (error, backups) { + getByStatePaged(backupdb.BACKUP_STATE_NORMAL, 1, 1, function (error, backups) { if (error) { debug('Unable to list backups', error); return callback(error); // no point trying to backup if appstore is down @@ -448,7 +449,7 @@ function cleanupAppBackups(backupConfig, referencedAppBackups, callback) { referencedAppBackups.push(app.lastBackupId); }); - backupdb.getPaged(backupdb.BACKUP_TYPE_APP, 1, 1000, function (error, appBackups) { + backupdb.getByTypePaged(backupdb.BACKUP_TYPE_APP, 1, 1000, function (error, appBackups) { if (error) return callback(new BackupsError(BackupsError.INTERNAL_ERROR, error)); async.eachSeries(appBackups, function iterator(backup, iteratorDone) { @@ -486,7 +487,7 @@ function cleanupBoxBackups(backupConfig, callback) { const now = new Date(); var referencedAppBackups = []; - getPaged(1, 1000, function (error, boxBackups) { + backupdb.getByTypePaged(backupdb.BACKUP_TYPE_BOX, 1, 1000, function (error, boxBackups) { if (error) return callback(error); if (boxBackups.length === 0) return callback(null, []); diff --git a/src/routes/backups.js b/src/routes/backups.js index d22f77c96..df6f5739f 100644 --- a/src/routes/backups.js +++ b/src/routes/backups.js @@ -5,7 +5,8 @@ exports = module.exports = { create: create }; -var backups = require('../backups.js'), +var backupdb = require('../backupdb.js'), + backups = require('../backups.js'), BackupsError = require('../backups.js').BackupsError, HttpError = require('connect-lastmile').HttpError, HttpSuccess = require('connect-lastmile').HttpSuccess; @@ -22,7 +23,7 @@ function get(req, res, next) { var perPage = typeof req.query.per_page !== 'undefined'? parseInt(req.query.per_page) : 25; if (!perPage || perPage < 0) return next(new HttpError(400, 'per_page query param has to be a postive number')); - backups.getPaged(page, perPage, function (error, result) { + backups.getByStatePaged(backupdb.BACKUP_STATE_NORMAL, page, perPage, function (error, result) { if (error && error.reason === BackupsError.EXTERNAL_ERROR) return next(new HttpError(503, error.message)); if (error) return next(new HttpError(500, error)); diff --git a/src/test/backups-test.js b/src/test/backups-test.js index 13dacaf88..50e472c0f 100644 --- a/src/test/backups-test.js +++ b/src/test/backups-test.js @@ -103,7 +103,7 @@ describe('backups', function () { backups.cleanup(function (error) { expect(error).to.not.be.ok(); - backups.getPaged(1, 1000, function (error, result) { + backupdb.getByTypePaged(backupdb.BACKUP_TYPE_BOX, 1, 1000, function (error, result) { expect(error).to.not.be.ok(); expect(result.length).to.equal(1); expect(result[0].id).to.equal(BACKUP_1.id); @@ -124,7 +124,7 @@ describe('backups', function () { backups.cleanup(function (error) { expect(error).to.not.be.ok(); - backups.getPaged(1, 1000, function (error, result) { + backupdb.getByTypePaged(backupdb.BACKUP_TYPE_BOX, 1, 1000, function (error, result) { expect(error).to.not.be.ok(); expect(result.length).to.equal(1); expect(result[0].id).to.equal(BACKUP_1.id); @@ -149,7 +149,7 @@ describe('backups', function () { backups.cleanup(function (error) { expect(error).to.not.be.ok(); - backupdb.getPaged(backupdb.BACKUP_TYPE_APP, 1, 1000, function (error, result) { + backupdb.getByTypePaged(backupdb.BACKUP_TYPE_APP, 1, 1000, function (error, result) { expect(error).to.not.be.ok(); expect(result.length).to.equal(2); @@ -198,7 +198,7 @@ describe('backups', function () { backups.cleanup(function (error) { expect(error).to.not.be.ok(); - backupdb.getPaged(backupdb.BACKUP_TYPE_APP, 1, 1000, function (error, result) { + backupdb.getByTypePaged(backupdb.BACKUP_TYPE_APP, 1, 1000, function (error, result) { expect(error).to.not.be.ok(); expect(result.length).to.equal(3); diff --git a/src/test/database-test.js b/src/test/database-test.js index b7171f245..9a68748e3 100644 --- a/src/test/database-test.js +++ b/src/test/database-test.js @@ -1051,8 +1051,8 @@ describe('database', function () { }); }); - it('getPaged succeeds', function (done) { - backupdb.getPaged(backupdb.BACKUP_TYPE_BOX, 1, 5, function (error, results) { + it('getByTypePaged succeeds', function (done) { + backupdb.getByTypePaged(backupdb.BACKUP_TYPE_BOX, 1, 5, function (error, results) { expect(error).to.be(null); expect(results).to.be.an(Array); expect(results.length).to.be(1);