diff options
Diffstat (limited to '')
-rw-r--r-- | lib/user.js | 83 |
1 files changed, 83 insertions, 0 deletions
diff --git a/lib/user.js b/lib/user.js new file mode 100644 index 00000000..1d7f11d2 --- /dev/null +++ b/lib/user.js @@ -0,0 +1,83 @@ +//user +//external modules +var mongoose = require('mongoose'); + +//core +var config = require("../config.js"); + +// create a user model +var model = mongoose.model('user', { + id: String, + profile: String, + history: String, + created: Date +}); + +//public +var user = { + model: model, + findUser: findUser, + newUser: newUser, + findOrNewUser: findOrNewUser, + getUserCount: getUserCount +}; + +function getUserCount(callback) { + model.count(function(err, count){ + if(err) callback(err, null); + else callback(null, count); + }); +} + +function findUser(id, callback) { + model.findOne({ + id: id + }, function (err, user) { + if (err) { + console.log('find user failed: ' + err); + callback(err, null); + } + if (!err && user != null) { + callback(null, user); + } else { + console.log('find user failed: ' + err); + callback(err, null); + }; + }); +} + +function newUser(id, profile, callback) { + var user = new model({ + id: id, + profile: JSON.stringify(profile), + created: Date.now() + }); + user.save(function (err) { + if (err) { + console.log('new user failed: ' + err); + callback(err, null); + } else { + console.log("new user success: " + user.id); + callback(null, user); + }; + }); +} + +function findOrNewUser(id, profile, callback) { + findUser(id, function(err, user) { + if(err || user == null) { + newUser(id, profile, function(err, user) { + if(err) { + console.log('find or new user failed: ' + err); + callback(err, null); + } else { + callback(null, user); + } + }); + } else { + callback(null, user); + } + }); +} + +module.exports = user;
\ No newline at end of file |