This commit is contained in:
Dennis Postma 2025-01-03 21:50:16 +01:00
parent e843213b0a
commit 0b4420f956
5 changed files with 14 additions and 25 deletions

View File

@ -1,5 +1,4 @@
import { BaseEvent } from '#application/base/baseEvent'
import Database from '#application/database'
import { CharacterHair } from '#entities/characterHair'
import characterHairRepository from '#repositories/characterHairRepository'
@ -12,8 +11,8 @@ export default class characterHairListEvent extends BaseEvent {
private async handleEvent(data: IPayload, callback: (response: CharacterHair[]) => void): Promise<void> {
try {
const items: CharacterHair[] = await characterHairRepository.getAllSelectable()
await Database.getEntityManager().populate(items, ['sprite'])
const items: CharacterHair[] = await characterHairRepository.getAllSelectable(['sprite'])
return callback(items)
} catch (error) {
this.logger.error('character:hair:list error', error)

View File

@ -22,8 +22,10 @@ export default class CharacterConnectEvent extends BaseEvent {
return
}
/// DOWN HERE
const character = await CharacterRepository.getByUserAndId(this.socket.userId!, data.characterId, ['characterHair', 'characterHair'])
const character = await CharacterRepository.getByUserAndId(this.socket.userId!, data.characterId, [
'characterType',
'characterHair'
])
if (!character) {
this.emitError('Character not found or does not belong to this user')

View File

@ -14,7 +14,7 @@ export default class SpriteListEvent extends BaseEvent {
if (!(await this.isCharacterGM())) return
// get all sprites
const sprites = await SpriteRepository.getAll()
const sprites = await SpriteRepository.getAll(['*'])
callback(sprites)
}
}

View File

@ -23,10 +23,10 @@ class CharacterHairRepository extends BaseRepository {
}
}
async getAllSelectable(): Promise<CharacterHair[]> {
async getAllSelectable(populate?: any): Promise<CharacterHair[]> {
try {
const repository = this.em.getRepository(CharacterHair)
return await repository.find({ isSelectable: true })
return await repository.find({ isSelectable: true }, { populate })
} catch (error: any) {
this.logger.error(`Failed to get selectable character hair: ${error instanceof Error ? error.message : String(error)}`)
return []

View File

@ -3,35 +3,23 @@ import { UUID } from '#application/types'
import { Sprite } from '#entities/sprite'
class SpriteRepository extends BaseRepository {
async getById(id: UUID) {
async getById(id: UUID, populate?: any) {
try {
const repository = this.em.getRepository(Sprite)
return await repository.findOne({ id })
return await repository.findOne({ id }, { populate })
} catch (error: any) {
return null
}
}
async getAll(): Promise<any> {
async getAll(populate?: any): Promise<Sprite[]> {
try {
const repository = this.em.getRepository(Sprite)
return await repository.findAll()
return await repository.findAll({ populate })
} catch (error: any) {
return null
return []
}
}
// @TODO: THIS BROKEY
// async getSpriteActions(spriteId: string): Promise<any> {
// try {
// const repository = this.em.getRepository(SpriteAction)
// return await repository.find({
// sprite: spriteId
// })
// } catch (error: any) {
// return null
// }
// }
}
export default new SpriteRepository()