import { Includeable, Transaction } from "sequelize/types"; import dfw_user from "../../model/dfw_user.model"; import { isNumber } from "util"; import { Database } from "../modules/DatabaseManager"; import DFWUtils from "../DFWUtils"; const Password = require("node-php-password"); export default class EntityHandler{ private db:Database; public constructor(db:Database){ this.db = db; } public dfw_user = { createAsync: async (nick:string,email:string,password:string,transaction?:Transaction):Promise => { var user = await this.db.retriveModel(dfw_user).create({ nick, email, encodedKey:Password.hash(password) },{ transaction }).then( (user: dfw_user) => user ).catch( (err)=> { return null; }); return user; }, findAsync: async (identifier:string|number,include?:Includeable[]):Promise => { if(identifier == null || identifier == undefined){ return null; } if(isNumber(identifier)){ return await this.db.retriveModel(dfw_user).findOne({where: { id: identifier } , include }); }else if(DFWUtils.isEmail(identifier)){ return await this.db.retriveModel(dfw_user).findOne({where: { email: identifier } , include }); }else{ return await this.db.retriveModel(dfw_user).findOne({where: { nick: identifier } , include }); } } } }