diff --git a/ExpressAPI/src/managers/UserManager.ts b/ExpressAPI/src/managers/UserManager.ts new file mode 100644 index 0000000000000000000000000000000000000000..81f129623f4f3f262f35c776762010cce05bc3fe --- /dev/null +++ b/ExpressAPI/src/managers/UserManager.ts @@ -0,0 +1,40 @@ +import User from '../models/User'; +import db from '../helpers/DatabaseHelper'; + + +class UserManager { + private static _instance: UserManager; + + private constructor() { } + + public static get instance(): UserManager { + if ( !UserManager._instance ) { + UserManager._instance = new UserManager(); + } + + return UserManager._instance; + } + + createObjectFromRawSql(raw: any): User { + return User.createFromSql(raw); + } + + async getByMail(mail: string): Promise<User | undefined> { + const raw = await db<User>(User.tableName).where('userMail', mail).first(); + + return raw ? this.createObjectFromRawSql(raw) : undefined; + } + + async getById(id: number): Promise<User | undefined> { + const raw = await db<User>(User.tableName).where('userID', id).first(); + + return raw ? this.createObjectFromRawSql(raw) : undefined; + } + + async getByIds(ids: Array<number>): Promise<Array<User>> { + return Promise.all(ids.map(userId => this.getById(userId))); + } +} + + +export default UserManager.instance;