import { dataSource } from "../data-source"; import { user } from "../entity/user"; import InternalException from "../exceptions/internalException"; export default abstract class UserService { /** * @description get user by id * @param id number * @returns {Promise} */ static async getById(id: number): Promise { return await dataSource .getRepository(user) .createQueryBuilder("user") .where("user.id = :id", { id: id }) .getOneOrFail() .then((res) => { return res; }) .catch((err) => { throw new InternalException("user not found by id"); }); } /** * @description get user by username * @param username string * @returns {Promise} */ static async getByUsername(username: string): Promise { return await dataSource .getRepository(user) .createQueryBuilder("user") .select() .where("user.username = :username", { username: username }) .getOneOrFail() .then((res) => { return res; }) .catch((err) => { throw new InternalException("user not found by username"); }); } }