//var conf = require('../../config.js').database; var redis = require("redis"), redisClient = redis.createClient(); // If you want Memory Store instead... // var MemoryStore = require('connect/middleware/session/memory'); // var session_store = new MemoryStore(); var RedisStore = require('connect-redis'); var session_store = new RedisStore( ); var REDIS_PREFIX = '#scrumscrum#'; //For Redis Debugging redisClient.on("error", function (err) { console.log("Redis error: " + err); }); var db = function(callback) { } db.prototype = { clearRoom: function(room, callback) { redisClient.del(REDIS_PREFIX + '-room:/demo-cards', function (err, res) { redisClient.del(REDIS_PREFIX + '-room:/demo-columns', function (err, res) { callback(); } } }, // theme commands setTheme: function(room, theme) { redisClient.set(REDIS_PREFIX + '-room:' + room + '-theme', theme); }, getTheme: function(room, callback) { redisClient.get(REDIS_PREFIX + '-room:' + room + '-theme', function (err, res) { callback(res); }); }, // Column commands createColumn: function(room, name, callback) { redisClient.rpush(REDIS_PREFIX + '-room:' + room + '-columns', name, function (err, res) { if (typeof callback != "undefined" && callback !== null) callback(); } ); }, getAllColumns: function(room, callback) { redisClient.lrange(REDIS_PREFIX + '-room:' + room + '-columns', 0, -1, function(err, res) { callback(res); }); }, deleteColumn: function(room) { redisClient.rpop(REDIS_PREFIX + '-room:' + room + '-columns'); }, setColumns: function(room, columns) { //1. first delete all columns redisClient.del(REDIS_PREFIX + '-room:' + room + '-columns', function () { //2. now add columns for each thingy async.forEachSeries( columns, function( item, callback ) { //console.log('rpush: ' + REDIS_PREFIX + '-room:' + room + '-columns' + ' -- ' + item); redisClient.rpush(REDIS_PREFIX + '-room:' + room + '-columns', item, function (err, res) { callback(); } ); }, function() { //this happens when the series is complete } ); }); }, // Card commands createCard: function(room, id, card) { var cardString = JSON.stringify(card); redisClient.hset( REDIS_PREFIX + '-room:' + room + '-cards', id, cardString ); }, getAllCards: function(room, callback) { redisClient.hgetall(REDIS_PREFIX + '-room:' + room + '-cards', function (err, res) { var cards = []; for (i in res) { cards.push( JSON.parse(res[i]) ); } console.dir(cards); callback(cards); }); }, cardEdit: function(room, id, text) { redisClient.hget(REDIS_PREFIX + '-room:' + room + '-cards', id, function(err, res) { var card = JSON.parse(res); if (card !== null) { card.text = text; redisClient.hset(REDIS_PREFIX + '-room:' + room + '-cards', id, JSON.stringify(card)); } }); }, cardSetXY: function(room, id, x, y) { redisClient.hget(REDIS_PREFIX + '-room:' + room + '-cards', id, function(err, res) { var card = JSON.parse(res); if (card !== null) { card.x = x; card.y = y; redisClient.hset(REDIS_PREFIX + '-room:' + room + '-cards', id, JSON.stringify(card)); } }); }, deleteCard: function(room, id) { redisClient.hdel( REDIS_PREFIX + '-room:' + room + '-cards', id ); }, addSticker: function(room, cardId, stickerId) { redisClient.hget(REDIS_PREFIX + '-room:' + room + '-cards', cardId, function(err, res) { var card = JSON.parse(res); if (card !== null) { card.sticker = stickerId; redisClient.hset(REDIS_PREFIX + '-room:' + room + '-cards', cardId, JSON.stringify(card)); } }); } }; exports.db = db;