You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
var nThen = require("nthen");
var Store = require("../lib/storage/file");var config = require("../lib/load-config");
var store;var Log;nThen(function (w) { // load the store which will be used for iterating over channels
// and performing operations like archival and deletion
Store.create(config, w(function (err, _) { if (err) { w.abort(); throw err; } store = _; }));
// load the logging module so that you have a record of which
// files were archived or deleted at what time
var Logger = require("../lib/log"); Logger.create(config, w(function (_) { Log = _; }));}).nThen(function (w) { // count the number of files which have been restored in this run
var conflicts = 0;
var handler = function (err, item, cb) { if (err) { Log.error('DIAGNOSE_ARCHIVE_CONFLICTS_ITERATION', err); return void cb(); }
// check if such a file exists on the server
store.isChannelAvailable(item.channel, function (err, available) { // weird edge case?
if (err) { return void cb(); }
// the channel doesn't exist in the database
if (!available) { return void cb(); }
// the channel is available
// that means it's a duplicate of something in the archive
conflicts++; Log.info('DIAGNOSE_ARCHIVE_CONFLICT_DETECTED', item.channel); cb(); }); };
// if you hit an error, log it
// otherwise, when there are no more channels to process
// log some stats about how many were removed
var done = function (err) { if (err) { return Log.error('DIAGNOSE_ARCHIVE_CONFLICTS_FINAL_ERROR', err); } Log.info('DIAGNOSE_ARCHIVE_CONFLICTS_COUNT', conflicts); };
store.listArchivedChannels(handler, w(done));}).nThen(function () { // the store will keep this script running if you don't shut it down
store.shutdown(); Log.shutdown();});
|