//mongojs implmentation var mongodb = require('mongodb'); var mongojs = require('mongojs'); //Logging to file for troubleshooting var fs = require('fs'); var util = require('util'); var log_file = fs.createWriteStream(__dirname + '/debug.log', {flags : 'w'}); var log_stdout = process.stdout; //debug logs to file for varying responses can be removed if not required var mylog = function(d) { log_file.write(util.format(d) + '\n'); }; var db = mongojs('127.0.0.1:27017/tcdisrupt',['contextcollection', 'usercollection']) //database events db.on('connect', function () { console.log('database connected') }); db.on('error', function (err) { console.log('database error', err) }); //CRUD components exports.createUserContext = function(emailString, roomIdString,userString, callback){ var newDoc = { email: emailString, roomId: roomIdString, user: userString, orderComplete: "new", }; db.contextcollection.insert(newDoc, function(err, res){ if(err){ return console.log(err) } callback(res); }); }; exports.findUserContext = function(emailString,roomIdString, callback){ db.contextcollection.find({email: emailString, roomId: roomIdString}, function(err,res){ console.log('User found'); if(err){ return console.log(err); } callback(res[0]); }); }; exports.replaceUserContext = function(emailString, roomIdString, newContext, callback){ db.contextcollection.remove({email: emailString, roomId: roomIdString}, function(err, res){ if(err){ return console.log(err); } console.log('Orignal context removed'); db.contextcollection.insert(newContext, function(err, res){ if(err){ return console.log(err); } console.log('User updated with new context'); callback(res); }); }); }; exports.updateUserContext = function(emailString, callback){ db.contextcollection.update({email: emailString},{$set:{orderComplete:'true'}}, function(err,doc){ if(err){ return console.log(err) } mylog(doc); callback(doc); }) }; //user collection exports.createUserAccount = function(emailString, callback){ var newUserDoc = { email: emailString, orderComplete: "false" }; db.usercollection.insert(newUserDoc, function(err, res){ if(err){ return console.log(err) } callback(res); }) }; exports.findUserAccount = function(emailString, callback){ db.usercollection.find({email: emailString}, function(err,res){ console.log('User found'); if(err){ return console.log(err); } callback(res[0]); }); }; exports.updateUser = function(emailString, callback){ db.usercollection.findAndModify({ query: {email: emailString}, update:{$set:{orderComplete:"true"}}, new: true }, function(err,doc, lastErrorObject){ if(err){ return console.log(err) } mylog(doc); callback(doc); }) }; exports.closeDb = function(callback){ db.close(); callback(); };