forked from noxious/server
48 lines
1.5 KiB
TypeScript
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
|