server/src/repositories/userRepository.ts

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()