diff --git a/storage/tasks.js b/storage/tasks.js index 22f89d7e2..dd2c03f13 100644 --- a/storage/tasks.js +++ b/storage/tasks.js @@ -196,6 +196,41 @@ var read = function (env, filePath, cb) { }); }; +var expire = function (env, task, cb) { + // TODO magic numbers, maybe turn task parsing into a function + // and also maybe just encode tasks in a better format to start... + var args = task.slice(2); + + if (!env.retainData) { + Log.info('DELETION_SCHEDULED_EXPIRATION', { + task: task, + }); + env.store.removeChannel(args[0], function (err) { + if (err) { + Log.error('DELETION_SCHEDULED_EXPIRATION_ERROR', { + task: task, + error: err, + }); + } + cb() + }); + return; + } + + Log.info('ARCHIVAL_SCHEDULED_EXPIRATION', { + task: task, + }); + env.store.archiveChannel(args[0], function (err) { + if (err) { + Log.error('ARCHIVE_SCHEDULED_EXPIRATION_ERROR', { + task: task, + error: err, + }); + } + cb(); + }); +}; + var run = Tasks.run = function (env, path, cb) { var CURRENT = +new Date(); @@ -223,11 +258,7 @@ var run = Tasks.run = function (env, path, cb) { }).nThen(function (w) { switch (command) { case 'EXPIRE': - Log.info('DELETION_SCHEDULED_EXPIRATION', { - task: task, - }); - env.store.removeChannel(args[0], w()); - break; + return void expire(env, task, w()); default: Log.warn("TASKS_UNKNOWN_COMMAND", task); } @@ -349,6 +380,7 @@ Tasks.create = function (config, cb) { root: config.taskPath || './tasks', log: config.log, store: config.store, + retainData: Boolean(config.retainData), }; // make sure the path exists...