Added base repository, updated char. hair repo and user repo
This commit is contained in:
parent
bc58d41c54
commit
d299528c26
24
src/repositories/baseRepository.ts
Normal file
24
src/repositories/baseRepository.ts
Normal file
@ -0,0 +1,24 @@
|
||||
import { appLogger } from '#utilities/logger'
|
||||
import { Database } from '#utilities/database'
|
||||
import { EntityManager, MikroORM } from '@mikro-orm/core'
|
||||
|
||||
export abstract class BaseRepository {
|
||||
protected orm!: MikroORM
|
||||
protected em!: EntityManager
|
||||
|
||||
constructor() {
|
||||
this.initializeORM().catch((error) => {
|
||||
appLogger.error(`Failed to initialize Repository: ${error instanceof Error ? error.message : String(error)}`)
|
||||
})
|
||||
}
|
||||
|
||||
private async initializeORM() {
|
||||
try {
|
||||
this.orm = await Database.getInstance()
|
||||
this.em = this.orm.em.fork()
|
||||
} catch (error: any) {
|
||||
appLogger.error(`Failed to initialize ORM: ${error instanceof Error ? error.message : String(error)}`)
|
||||
throw error
|
||||
}
|
||||
}
|
||||
}
|
@ -1,29 +1,44 @@
|
||||
import prisma from '#utilities/prisma' // Import the global Prisma instance
|
||||
import { CharacterHair } from '@prisma/client'
|
||||
import { BaseRepository } from './baseRepository'
|
||||
import { CharacterHair } from '#entities/characterHair'
|
||||
import { appLogger } from '#utilities/logger'
|
||||
|
||||
class CharacterHairRepository {
|
||||
async getAll(): Promise<CharacterHair[]> {
|
||||
return prisma.characterHair.findMany()
|
||||
class CharacterHairRepository extends BaseRepository {
|
||||
async getAll() {
|
||||
try {
|
||||
const repository = this.em.getRepository(CharacterHair)
|
||||
return await repository.findAll()
|
||||
} catch (error: any) {
|
||||
appLogger.error(`Failed to get all character hair: ${error instanceof Error ? error.message : String(error)}`)
|
||||
return null
|
||||
}
|
||||
}
|
||||
async getAllSelectable(): Promise<CharacterHair[]> {
|
||||
return prisma.characterHair.findMany({
|
||||
where: {
|
||||
|
||||
async getAllSelectable() {
|
||||
try {
|
||||
const repository = this.em.getRepository(CharacterHair)
|
||||
return await repository.find({
|
||||
isSelectable: true
|
||||
}
|
||||
})
|
||||
})
|
||||
} catch (error: any) {
|
||||
appLogger.error(`Failed to get selectable character hair: ${error instanceof Error ? error.message : String(error)}`)
|
||||
return null
|
||||
}
|
||||
}
|
||||
|
||||
async getById(id: number) {
|
||||
return prisma.characterHair.findUnique({
|
||||
where: { id },
|
||||
include: {
|
||||
sprite: {
|
||||
include: {
|
||||
spriteActions: true
|
||||
}
|
||||
try {
|
||||
const repository = this.em.getRepository(CharacterHair)
|
||||
return await repository.findOne(
|
||||
{ id },
|
||||
{
|
||||
populate: ['sprite.spriteActions']
|
||||
}
|
||||
}
|
||||
})
|
||||
)
|
||||
} catch (error: any) {
|
||||
appLogger.error(`Failed to get character hair by ID: ${error instanceof Error ? error.message : String(error)}`)
|
||||
return null
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
export default new CharacterHairRepository()
|
||||
export default new CharacterHairRepository()
|
@ -1,19 +1,13 @@
|
||||
import { appLogger } from '#utilities/logger'
|
||||
import { Database } from '#utilities/database'
|
||||
import { User } from '../entities/user'
|
||||
import { BaseRepository } from './baseRepository'
|
||||
import { User } from '#entities/user'
|
||||
|
||||
class UserRepository {
|
||||
class UserRepository extends BaseRepository {
|
||||
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
|
||||
})
|
||||
const repository = this.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
|
||||
}
|
||||
@ -21,15 +15,9 @@ class UserRepository {
|
||||
|
||||
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
|
||||
})
|
||||
const repository = this.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
|
||||
}
|
||||
@ -37,19 +25,13 @@ class UserRepository {
|
||||
|
||||
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
|
||||
})
|
||||
const repository = this.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()
|
||||
export default new UserRepository()
|
Loading…
x
Reference in New Issue
Block a user