hacken
Version:
Hacken is a node module to help people in hackathons, it has almost all the common features a person needs from database operations to sockets. If you are the one who struglles with MongoDb ObjectId, hacken makes it easier to work with then too.
138 lines (124 loc) • 3.01 kB
JavaScript
const model = require('./userModel.js');
const roomModel = require('./../sockets/roomModel.js');
const {isObjValid} = require('./../objectop.js');
const mongoose = require('mongoose');
var userCreate = (object)=>{
return new Promise((resolve,reject)=>{
model.create(object).then((result)=>{
return result.hashAndSave();
}).then((user)=>{
resolve(user);
}).catch((err)=>{
reject(err);
});
});
}
var userFindByUsername = (username)=>{
return new Promise((resolve,reject)=>{
model.findOne({username:username}).then((result)=>{
if(!result){
reject("No User Found.");
}
resolve(result);
}).catch((err)=>{
reject(err);
})
});
}
var userFindByName = (name)=>{
return new Promise((resolve,reject)=>{
model.find({name:name}).then((result)=>{
if(result.length == 0){
reject("No User Found.");
}
resolve(result);
}).catch((err)=>{
reject(err);
});
});
}
var userLogin = (username,password)=>{
return new Promise((resolve,reject)=>{
model.compare(username,password).then((result)=>{
resolve({user:result,msg:"Logged In."});
}).catch((err)=>{
reject(err);
});
});
}
var userUpdate = (username,object)=>{
return new Promise((resolve,reject)=>{
if(object.password){
reject("Cannot Update Password.");
}
model.findOneAndUpdate({username:username},object).then((result)=>{
if(!result){
reject("Invalid Username.");
}
resolve({msg:"Updated",user:result});
}).catch((err)=>{
reject(err);
});
});
}
var userFindById = (id)=>{
return new Promise((resolve,reject)=>{
if(!isObjValid(id)){
reject("ObjectId Is Invalid.");
}
model.findById(id).then((result)=>{
resolve(result);
}).catch((err)=>{
reject(err);
})
});
}
var userRemove = (username)=>{
return new Promise((resolve,reject)=>{
model.findOneAndRemove({username:username}).then((result)=>{
if(!result){
reject("No User Found.");
}
resolve(result);
}).catch((err)=>{
reject(err);
});
})
}
var roomFind = (username,page,length)=>{
return new Promise((resolve,reject)=>{
model.findOne({username:username}).populate({path:'chatroom',select:'id -_id',options:{limit:length,skip:length*(page-1)}}).then((result)=>{
console.log(result);
if(!result){
reject("Invalid Username.");
}
resolve(result);
}).catch((err)=>{
console.log(err);
reject("Couldn't Pass The Query. Check Page, Length, Username Parameters.");
});
});
}
var msgFind = (room)=>{
return new Promise((resolve,reject)=>{
roomModel.findOne({id:room},{messages:1,_id:0}).then((result)=>{
if(!result){
reject("Invalid RoomId.");
}
resolve(result);
}).catch((err)=>{
reject("Couldn't Padd The Parameters.");
});
});
}
module.exports = {
userCreate,
userUpdate,
userLogin,
userFindByName,
userFindByUsername,
userRemove,
userFindById,
roomFind,
msgFind
}