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 { BaseEvent } from '#application/base/baseEvent'
import Database from '#application/database'
import { CharacterHair } from '#entities/characterHair' import { CharacterHair } from '#entities/characterHair'
import characterHairRepository from '#repositories/characterHairRepository' 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> { private async handleEvent(data: IPayload, callback: (response: CharacterHair[]) => void): Promise<void> {
try { try {
const items: CharacterHair[] = await characterHairRepository.getAllSelectable() const items: CharacterHair[] = await characterHairRepository.getAllSelectable(['sprite'])
await Database.getEntityManager().populate(items, ['sprite'])
return callback(items) return callback(items)
} catch (error) { } catch (error) {
this.logger.error('character:hair:list error', error) this.logger.error('character:hair:list error', error)

View File

@ -22,8 +22,10 @@ export default class CharacterConnectEvent extends BaseEvent {
return return
} }
/// DOWN HERE const character = await CharacterRepository.getByUserAndId(this.socket.userId!, data.characterId, [
const character = await CharacterRepository.getByUserAndId(this.socket.userId!, data.characterId, ['characterHair', 'characterHair']) 'characterType',
'characterHair'
])
if (!character) { if (!character) {
this.emitError('Character not found or does not belong to this user') 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 if (!(await this.isCharacterGM())) return
// get all sprites // get all sprites
const sprites = await SpriteRepository.getAll() const sprites = await SpriteRepository.getAll(['*'])
callback(sprites) callback(sprites)
} }
} }

View File

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

View File

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