84 lines
		
	
	
		
			1.9 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			84 lines
		
	
	
		
			1.9 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
| //user
 | |
| //external modules
 | |
| var mongoose = require('mongoose');
 | |
| 
 | |
| //core
 | |
| var config = require("../config.js");
 | |
| var logger = require("./logger.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) {
 | |
|             logger.error('find user failed: ' + err);
 | |
|             callback(err, null);
 | |
|         }
 | |
|         if (!err && user) {
 | |
|             callback(null, user);
 | |
|         } else {
 | |
|             logger.error('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) {
 | |
|             logger.error('new user failed: ' + err);
 | |
|             callback(err, null);
 | |
|         } else {
 | |
|             logger.info("new user success: " + user.id);
 | |
|             callback(null, user);
 | |
|         };
 | |
|     });
 | |
| }
 | |
| 
 | |
| function findOrNewUser(id, profile, callback) {
 | |
|     findUser(id, function(err, user) {
 | |
|         if(err || !user) {
 | |
|             newUser(id, profile, function(err, user) {
 | |
|                 if(err) {
 | |
|                     logger.error('find or new user failed: ' + err);
 | |
|                     callback(err, null);
 | |
|                 } else {
 | |
|                     callback(null, user);
 | |
|                 }
 | |
|             });
 | |
|         } else {
 | |
|             callback(null, user);
 | |
|         }
 | |
|     });
 | |
| }
 | |
| 
 | |
| module.exports = user; |