the infra version is bumped because the nginx's dhparams path has changed and the sftp server key path has changed.
43 lines
1.6 KiB
JavaScript
43 lines
1.6 KiB
JavaScript
'use strict';
|
|
|
|
const async = require('async'),
|
|
fs = require('fs'),
|
|
path = require('path');
|
|
|
|
const APPICONS_DIR = '/home/yellowtent/boxdata/appicons';
|
|
|
|
exports.up = function(db, callback) {
|
|
async.series([
|
|
db.runSql.bind(db, 'ALTER TABLE apps ADD COLUMN icon MEDIUMBLOB'),
|
|
db.runSql.bind(db, 'ALTER TABLE apps ADD COLUMN appStoreIcon MEDIUMBLOB'),
|
|
function migrateIcons(next) {
|
|
fs.readdir(APPICONS_DIR, function (error, filenames) {
|
|
if (error && error.code === 'ENOENT') return next();
|
|
if (error) return next(error);
|
|
|
|
async.eachSeries(filenames, function (filename, iteratorCallback) {
|
|
const icon = fs.readFileSync(path.join(APPICONS_DIR, filename));
|
|
const appId = filename.split('.')[0];
|
|
|
|
if (filename.endsWith('.user.png')) {
|
|
db.runSql('UPDATE apps SET icon=? WHERE id=?', [ icon, appId ], iteratorCallback);
|
|
} else {
|
|
db.runSql('UPDATE apps SET appStoreIcon=? WHERE id=?', [ icon, appId ], iteratorCallback);
|
|
}
|
|
}, function (error) {
|
|
if (error) return next(error);
|
|
|
|
fs.rmdir(APPICONS_DIR, { recursive: true }, next);
|
|
});
|
|
});
|
|
}
|
|
], callback);
|
|
};
|
|
|
|
exports.down = function(db, callback) {
|
|
async.series([
|
|
db.runSql.bind(db, 'ALTER TABLE apps DROP COLUMN icon'),
|
|
db.runSql.bind(db, 'ALTER TABLE apps DROP COLUMN appStoreIcon'),
|
|
], callback);
|
|
};
|