174 lines
2.9 KiB
JavaScript
174 lines
2.9 KiB
JavaScript
var Db = require('mongodb').Db;
|
|
Server = require('mongodb').Server,
|
|
BSON = require('mongodb').BSONNative,
|
|
conf = require('../../config.js').database;
|
|
|
|
var db = function(callback)
|
|
{
|
|
this.rooms = false;
|
|
var t = this;
|
|
|
|
var db = new Db(conf.database, new Server(conf.hostname, conf.port), {native_parser:true});
|
|
db.open(function(err, db) {
|
|
db.collection('rooms', function(err, collection) {
|
|
// make sure we have an index on name
|
|
collection.ensureIndex([['name',1]],false,function() {});
|
|
t.rooms = collection;
|
|
});
|
|
callback();
|
|
});
|
|
}
|
|
|
|
db.prototype = {
|
|
clearRoom: function(room, callback)
|
|
{
|
|
this.rooms.remove({name:room},callback);
|
|
},
|
|
|
|
// theme commands
|
|
setTheme: function(room, theme)
|
|
{
|
|
this.rooms.update(
|
|
{name:room},
|
|
{$set:{theme:theme}}
|
|
);
|
|
},
|
|
|
|
getTheme: function(room, callback)
|
|
{
|
|
this.rooms.findOne(
|
|
{name:room},
|
|
{theme:true},
|
|
function(err, room) {
|
|
if(room) {
|
|
callback(room.theme);
|
|
} else {
|
|
callback();
|
|
}
|
|
}
|
|
);
|
|
},
|
|
|
|
// Column commands
|
|
createColumn: function(room, name, callback)
|
|
{
|
|
this.rooms.update(
|
|
{name:room},
|
|
{$push:{columns:name}},
|
|
{upsert:true}
|
|
,callback
|
|
);
|
|
},
|
|
|
|
getAllColumns: function(room, callback)
|
|
{
|
|
this.rooms.findOne({name:room},{columns:true},function(err, room) {
|
|
if(room) {
|
|
callback(room.columns);
|
|
} else {
|
|
callback();
|
|
}
|
|
});
|
|
},
|
|
|
|
deleteColumn: function(room)
|
|
{
|
|
this.rooms.update(
|
|
{name:room},
|
|
{$pop:{columns:1}}
|
|
);
|
|
},
|
|
|
|
setColumns: function(room, columns)
|
|
{
|
|
this.rooms.update(
|
|
{name:room},
|
|
{$set:{columns:columns}},
|
|
{upsert:true}
|
|
);
|
|
},
|
|
|
|
// Card commands
|
|
createCard: function(room, id, card)
|
|
{
|
|
var doc = {};
|
|
doc['cards.'+id] = card;
|
|
this.rooms.update(
|
|
{name:room},
|
|
{$set:doc},
|
|
{upsert:true}
|
|
);
|
|
},
|
|
|
|
getAllCards: function(room, callback)
|
|
{
|
|
this.rooms.findOne({name:room},{cards:true},function(err, room) {
|
|
if(room) {
|
|
callback(room.cards);
|
|
} else {
|
|
callback();
|
|
}
|
|
});
|
|
},
|
|
|
|
cardEdit: function(room, id, text)
|
|
{
|
|
var doc = {};
|
|
doc['cards.'+id+'.text'] = text;
|
|
this.rooms.update(
|
|
{name:room},
|
|
{$set:doc}
|
|
);
|
|
},
|
|
|
|
cardSetXY: function(room, id, x, y)
|
|
{
|
|
var doc = {};
|
|
doc['cards.'+id+'.x'] = x;
|
|
doc['cards.'+id+'.y'] = y;
|
|
this.rooms.update(
|
|
{name:room},
|
|
{$set:doc}
|
|
);
|
|
},
|
|
|
|
deleteCard: function(room, id)
|
|
{
|
|
var doc = {};
|
|
doc['cards.'+id] = true;
|
|
this.rooms.update(
|
|
{name:room},
|
|
{$unset:doc}
|
|
);
|
|
},
|
|
|
|
addSticker: function(room, cardId, stickerId)
|
|
{
|
|
var doc = {};
|
|
doc['cards.'+cardId+'.sticker'] = stickerId;
|
|
this.rooms.update(
|
|
{name:room},
|
|
{$set:doc}
|
|
);
|
|
},
|
|
getBoardSize: function(room, callback) {
|
|
this.rooms.findOne(
|
|
{name:room},
|
|
function(err, room) {
|
|
if(room) {
|
|
callback(room.size);
|
|
} else {
|
|
callback();
|
|
}
|
|
}
|
|
);
|
|
},
|
|
setBoardSize: function(room, size) {
|
|
this.room.findOne({name:room})
|
|
this.rooms.update(
|
|
{name:room},
|
|
{$set:{'size':size}}
|
|
);
|
|
}
|
|
};
|
|
exports.db = db;
|