model-native-driver.js | |
---|---|
Database Operations | var Db = require('../lib/mongodb/db').Db,
ObjectId = require('../lib/mongodb/bson/bson').ObjectID,
Server = require('../lib/mongodb/connection').Server,
conf = require('../config.js').database,
util = require('util');
db = function(database, callback) {
this.desks = false;
var self = this;
this.db = new Db(database, new Server(conf.hostname, conf.port, {}, {}));
this.db.open(function(err, db) {
if(db == null) throw new Error('no database connection');
db.collection('desks', function(err, collection) { |
make sure we have an index and unique constrain on name | collection.ensureIndex({name : 1}, {unique : true}, function() {})
});
});
};
db.prototype.getCollection= function(callback) {
this.db.collection('desks', function(error, desk_collection) {
if( error ) callback(error);
else callback(null, desk_collection);
});
};
db.prototype.findAll = function(callback) {
this.getCollection(function(error, desk_collection) {
if( error ) callback(error)
else {
desk_collection.find(function(error, cursor) {
if( error ) callback(error)
else {
cursor.toArray(function(error, results) {
if( error ) callback(error)
else callback(null, results)
});
}
});
}
});
};
db.prototype.findById = function(id, callback) {
this.getCollection(function(error, desk_collection) {
if( error ) callback(error)
else {
desk_collection.findOne({_id: id}, function(error, result) {
if( error ) callback(error)
else callback(null, result)
});
}
});
}; |
Desktop Operations | /* create desktop */
db.prototype.createDesk = function(deskName, callback) {
this.getCollection(function(error, desk_collection) {
if( error ) callback(error)
else {
var currentDate = new Date();
desk_collection.insert({name:deskName, date: currentDate}, function(error, objects) {
if( error ) callback(error)
else callback(null, objects);
});
}
});
};
/* get desktop */
db.prototype.getDesk = function(deskName, callback) {
this.getCollection(function(error, desk_collection) {
if( error ) callback(error)
else {
desk_collection.findOne({name: deskName}, function(error, result) {
if( error ) callback(error)
else callback(null, result)
});
}
});
};
/* delete desktop */
db.prototype.deleteDesk = function(deskName, callback) {
this.getCollection(function(error, desk_collection) {
if( error ) callback(error)
else {
desk_collection.remove({name:deskName}, function(error, ka) {
if( error ) callback(ka)
else callback(null, ka);
});
}
});
}; |
File Operations | /* create file */
db.prototype.createFile = function(deskName, file, callback) {
this.getCollection(function(error, desk_collection) {
if( error ) callback(error)
else { |
creatÃng new key | var id = new ObjectId();
file['_id'] = id;
desk_collection.update(
{name:deskName},
{$push:{files:file}},
{safe:true, upsert: false},
function(error) {
if( error ) callback(error)
else callback(null);
}
);
}
});
};
/* get file */
db.prototype.getFile = function(id, callback) {
this.getCollection(function(error, desk_collection) {
if(error) callback(error)
else {
desk_collection.findOne({'files._id':ObjectId(id)}, function(error, desk) {
if(error) callback(error)
else {
if(desk) {
for(var i in desk.files) {
if(desk.files[i]._id==id) {
callback(null, desk.files[i]);
}
}
}
else {
callback(null, []);
}
}
});
}
});
};
/* get desktop files */
db.prototype.getAllFiles = function(deskName, callback) {
this.getCollection(function(error, desk_collection) {
if( error ) callback(error)
else {
desk_collection.findOne({name:deskName}, function(error, desk) {
if( error ) callback(error)
else {
if( desk == null ) {
callback(null, []);
}
else {
if(typeof desk.files != 'undefined') {
callback(null, desk.files);
}
else {
callback(null, []);
}
}
}
});
}
});
};
/* rename file */
db.prototype.renameFile = function(id, newName, callback) {
this.getCollection(function(error, desk_collection) {
if( error ) callback(error)
else {
desk_collection.update(
{'files._id': ObjectId(id)},
{$set:{'files.$.name': newName}},
function(error, file) {
if( error ) callback(file)
else callback(null, file);
}
);
console.log("after update");
}
});
}; |
change position file | db.prototype.setFilePosition = function(deskName, id, x, y, callback) {
this.getCollection(function(error, desk_collection) {
if( error ) callback(error)
else {
desk_collection.update(
{'files._id': ObjectId(id)},
{$set:{'files.$.y': y, 'files.$.x': x}},
function(error, file) {
if( error ) callback(file)
else callback(null, file);
}
);
}
});
}; |
delete file | db.prototype.deleteFile = function(id, callback) {
this.getCollection(function(error, desk_collection) {
if( error ) callback(error)
else {
desk_collection.update(
{'files._id': ObjectId(id)},
{$pull:{files:{'_id': ObjectId(id)}}},
function(error, file) {
if( error ) callback(file)
else callback(null, file);
}
);
}
});
};
exports.db = db;
|