56 lines
1.4 KiB
TypeScript
56 lines
1.4 KiB
TypeScript
import { appLogger } from '#utilities/logger'
|
|
import { Database } from '#utilities/database'
|
|
import { User } from '../entities/user'
|
|
|
|
class UserRepository {
|
|
async getById(id: number) {
|
|
try {
|
|
const orm = await Database.getInstance()
|
|
const em = orm.em.fork()
|
|
const repository = em.getRepository(User)
|
|
|
|
return await repository.findOne({
|
|
id
|
|
})
|
|
} catch (error: any) {
|
|
// Handle error
|
|
appLogger.error(`Failed to get user by ID: ${error instanceof Error ? error.message : String(error)}`)
|
|
return null
|
|
}
|
|
}
|
|
|
|
async getByUsername(username: string) {
|
|
try {
|
|
const orm = await Database.getInstance()
|
|
const em = orm.em.fork()
|
|
const repository = em.getRepository(User)
|
|
|
|
return await repository.findOne({
|
|
username
|
|
})
|
|
} catch (error: any) {
|
|
// Handle error
|
|
appLogger.error(`Failed to get user by username: ${error instanceof Error ? error.message : String(error)}`)
|
|
return null
|
|
}
|
|
}
|
|
|
|
async getByEmail(email: string) {
|
|
try {
|
|
const orm = await Database.getInstance()
|
|
const em = orm.em.fork()
|
|
const repository = em.getRepository(User)
|
|
|
|
return await repository.findOne({
|
|
email
|
|
})
|
|
} catch (error: any) {
|
|
// Handle error
|
|
appLogger.error(`Failed to get user by email: ${error instanceof Error ? error.message : String(error)}`)
|
|
return null
|
|
}
|
|
}
|
|
}
|
|
|
|
export default new UserRepository()
|