import type { UUID } from '#application/types' import { BaseRepository } from '#application/base/baseRepository' import { User } from '#entities/user' class UserRepository extends BaseRepository { async getById(id: UUID) { try { const repository = this.getEntityManager().getRepository(User) const result = await repository.findOne({ id }) if (result) result.setEntityManager(this.getEntityManager()) return result } catch (error: any) { this.logger.error(`Failed to get user by ID: ${error instanceof Error ? error.message : String(error)}`) return null } } async getByUsername(username: string) { try { const repository = this.getEntityManager().getRepository(User) const result = await repository.findOne({ username }) if (result) result.setEntityManager(this.getEntityManager()) return result } catch (error: any) { this.logger.error(`Failed to get user by username: ${error instanceof Error ? error.message : String(error)}`) return null } } async getByEmail(email: string) { try { const repository = this.getEntityManager().getRepository(User) const result = await repository.findOne({ email }) if (result) result.setEntityManager(this.getEntityManager()) return result } catch (error: any) { this.logger.error(`Failed to get user by email: ${error instanceof Error ? error.message : String(error)}`) return null } } } export default UserRepository