UNPKG

annie-node-webapp-user

Version:
66 lines (58 loc) 2.18 kB
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;