diff --git a/lib/db.coffee b/lib/db.coffee index f3c0633..a9483b3 100644 --- a/lib/db.coffee +++ b/lib/db.coffee @@ -27,6 +27,29 @@ presetsCollection = null objectsCollection = null +# Only flush redis DB if aliases or custom commands config has changed +flushRedis = (callback) -> + redisClient.get('config_hash', (err, res) -> + return callback(err) if err + + hash = require('crypto') + .createHash('md5') + .update(JSON.stringify(config.PARAMETERS)) + .update(JSON.stringify(config.CUSTOM_COMMANDS)) + .digest('hex') + + if res == hash + return callback() + + redisClient.flushdb((err) -> + return callback(err) if err + redisClient.set('config_hash', hash, (err, res) -> + return callback(err) + ) + ) + ) + + connect = (callback) -> callbackCounter = 6 mongodb.MongoClient.connect(config.MONGODB_CONNECTION_URL, {db:{w:1},server:{autoReconnect:true}}, (err, db) -> @@ -72,9 +95,15 @@ connect = (callback) -> exports.redisClient = redisClient = redis.createClient(config.REDIS_PORT, config.REDIS_HOST) redisClient.select(config.REDIS_DB, (err) -> - if --callbackCounter == 0 or err + if err callbackCounter = 0 return callback(err) + + flushRedis((err) -> + if --callbackCounter == 0 or err + callbackCounter = 0 + return callback(err) + ) ) )