1
0
forked from noxious/server
noxious_server/src/repositories/userRepository.ts

48 lines
1.5 KiB
TypeScript

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