summaryrefslogtreecommitdiff
path: root/lib/user.js
diff options
context:
space:
mode:
authorWu Cheng-Han2015-05-04 15:53:29 +0800
committerWu Cheng-Han2015-05-04 15:53:29 +0800
commit4b0ca55eb79e963523eb6c8197825e9e8ae904e2 (patch)
tree574f3923af77b37b41dbf1b00bcd7827ef724a28 /lib/user.js
parent61eb11d23c65c9e5c493c67d055f785cbec139e2 (diff)
First commit, version 0.2.7
Diffstat (limited to 'lib/user.js')
-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