From 83dc1d86d2dad8e8e5660fb23e1c773391ddd636 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C3=ABl=20Minelli?= <michael@minelli.me> Date: Fri, 2 Jun 2023 14:15:11 +0200 Subject: [PATCH] Managers => Add user manager --- ExpressAPI/src/managers/UserManager.ts | 40 ++++++++++++++++++++++++++ 1 file changed, 40 insertions(+) create mode 100644 ExpressAPI/src/managers/UserManager.ts diff --git a/ExpressAPI/src/managers/UserManager.ts b/ExpressAPI/src/managers/UserManager.ts new file mode 100644 index 0000000..81f1296 --- /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; -- GitLab