2015-05-04 03:53:29 -04:00
|
|
|
//user
|
|
|
|
//external modules
|
|
|
|
var mongoose = require('mongoose');
|
|
|
|
|
|
|
|
//core
|
|
|
|
var config = require("../config.js");
|
2015-07-01 12:10:20 -04:00
|
|
|
var logger = require("./logger.js");
|
2015-05-04 03:53:29 -04:00
|
|
|
|
|
|
|
// 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) {
|
2015-07-01 12:10:20 -04:00
|
|
|
logger.error('find user failed: ' + err);
|
2015-05-04 03:53:29 -04:00
|
|
|
callback(err, null);
|
|
|
|
}
|
2015-05-15 00:58:13 -04:00
|
|
|
if (!err && user) {
|
2015-05-04 03:53:29 -04:00
|
|
|
callback(null, user);
|
|
|
|
} else {
|
2015-07-01 12:10:20 -04:00
|
|
|
logger.error('find user failed: ' + err);
|
2015-05-04 03:53:29 -04:00
|
|
|
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) {
|
2015-07-01 12:10:20 -04:00
|
|
|
logger.error('new user failed: ' + err);
|
2015-05-04 03:53:29 -04:00
|
|
|
callback(err, null);
|
|
|
|
} else {
|
2015-07-01 12:10:20 -04:00
|
|
|
logger.info("new user success: " + user.id);
|
2015-05-04 03:53:29 -04:00
|
|
|
callback(null, user);
|
|
|
|
};
|
|
|
|
});
|
|
|
|
}
|
|
|
|
|
|
|
|
function findOrNewUser(id, profile, callback) {
|
|
|
|
findUser(id, function(err, user) {
|
2015-05-15 00:58:13 -04:00
|
|
|
if(err || !user) {
|
2015-05-04 03:53:29 -04:00
|
|
|
newUser(id, profile, function(err, user) {
|
|
|
|
if(err) {
|
2015-07-01 12:10:20 -04:00
|
|
|
logger.error('find or new user failed: ' + err);
|
2015-05-04 03:53:29 -04:00
|
|
|
callback(err, null);
|
|
|
|
} else {
|
|
|
|
callback(null, user);
|
|
|
|
}
|
|
|
|
});
|
|
|
|
} else {
|
|
|
|
callback(null, user);
|
|
|
|
}
|
|
|
|
});
|
|
|
|
}
|
|
|
|
|
|
|
|
module.exports = user;
|