summaryrefslogtreecommitdiff
path: root/lib/user.js
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--lib/user.js83
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