var Eviction = require("../lib/eviction"); var nThen = require("nthen"); var Store = require("../lib/storage/file"); var BlobStore = require("../lib/storage/blob"); var Quota = require("../lib/commands/quota"); var config = require("../lib/load-config"); var Env = { inactiveTime: config.inactiveTime, archiveRetentionTime: config.archiveRetentionTime, accountRetentionTime: config.accountRetentionTime, paths: { pin: config.pinPath, }, }; var prepareEnv = function (Env, cb) { Env.customLimits = config.customLimits; Quota.applyCustomLimits(Env); nThen(function (w) { /* Database adaptors */ // 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; } Env.store = _; })); Store.create({ filePath: config.pinPath, }, w(function (err, _) { if (err) { w.abort(); throw err; } Env.pinStore = _; })); // 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 (_) { Env.Log = _; })); config.getSession = function () {}; BlobStore.create(config, w(function (err, _) { if (err) { w.abort(); return console.error(err); } Env.blobStore = _; })); }).nThen(function () { cb(); }); }; var shutdown = function (Env) { // the store will keep this script running if you don't shut it down //Env.store.shutdown(); //Env.Log.shutdown(); //Env.pinStore.shutdown(); }; nThen(function (w) { // load database adaptors and configuration values into the environment prepareEnv(Env, w(function () { })); }).nThen(function (w) { Eviction(Env, w(function () { })); }).nThen(function () { // shut down database adaptors shutdown(Env); });