annie-node-webapp-user
Version:
user module in annie.design website
66 lines (58 loc) • 2.18 kB
JavaScript
var annieUtils = require("annie-node-utils");
function UserDao(config) {
if (!config) throw new Error("config can not be null.");
if (!config.mysql) throw new Error("config.mysql can not be null.");
var mysql = annieUtils.createMySql(config.mysql);
this.getUserByName = async function(username) {
var sql = "select userid, username, password, salt, email \
from user \
where username = :username \
";
var args = {
username: username
};
var result = await mysql.query(sql, args);
if (result.results) {
return result.results[0];
}
return null;
}
this.getUserByEmail = async function(email) {
var sql = "select userid, username, password, salt, email \
from user \
where email = :email \
";
var args = {
email: email
};
var result = await mysql.query(sql, args);
if (result.results) {
return result.results[0];
}
return null;
}
this.insert = async function(user) {
if (!user) throw new Error("user can not be null or undefined.");
if (user.userid && user.userid > 0) {
throw new Error("new user should not have a userid before inserting into database.");
}
user.isEmailVerified=false;
var sql = "insert into user (username,email,password,salt,isLocked,isEmailVerified,faDateTime) \
values(:username, :email, :password, :salt, :isLocked,:isEmailVerified, :faDateTime) \
";
var result = await mysql.query(sql, user);
user.userid = result.results.insertId;
return user;
}
this.search = async function(q){
if(!q) throw new Error("keyword q is empty.");
var sql="select userid,username,password,email,isLocked,isEmailVerified,faDateTime, lcDateTime \
from user \
where username likes :q \
or email likes :q \
";
var result = await mysql.query(sql,{q:q});
return result.results;
}
}
module.exports = UserDao;