diff --git a/src/events/gameMaster/assetManager/characterHair/delete.ts b/src/events/gameMaster/assetManager/characterHair/delete.ts index 75f5b83..405a4ee 100644 --- a/src/events/gameMaster/assetManager/characterHair/delete.ts +++ b/src/events/gameMaster/assetManager/characterHair/delete.ts @@ -6,7 +6,7 @@ interface IPayload { id: UUID } -export default class characterHairDeleteEvent extends BaseEvent { +export default class CharacterHairDeleteEvent extends BaseEvent { public listen(): void { this.socket.on('gm:characterHair:remove', this.handleEvent.bind(this)) } @@ -15,13 +15,16 @@ export default class characterHairDeleteEvent extends BaseEvent { try { if (!(await this.isCharacterGM())) return - const characterHair = await CharacterHairRepository.getById(data.id) - await (await CharacterHairRepository.getById(data.id))?.delete() + const characterHairRepository = new CharacterHairRepository() + const characterHair = await characterHairRepository.getById(data.id) + if (!characterHair) return callback(false) + + await characterHair.delete() return callback(true) } catch (error) { - this.logger.error(`Error deleting character type ${data.id}: ${error instanceof Error ? error.message : String(error)}`) - callback(false) + this.logger.error(`Error deleting character hair ${data.id}: ${error instanceof Error ? error.message : String(error)}`) + return callback(false) } } } diff --git a/src/events/gameMaster/assetManager/item/create.ts b/src/events/gameMaster/assetManager/item/create.ts index ec1926e..90118fd 100644 --- a/src/events/gameMaster/assetManager/item/create.ts +++ b/src/events/gameMaster/assetManager/item/create.ts @@ -1,5 +1,7 @@ import { BaseEvent } from '#application/base/baseEvent' +import { ItemRarity, ItemType } from '#application/enums' import { Item } from '#entities/item' +import SpriteRepository from '#repositories/spriteRepository' export default class ItemCreateEvent extends BaseEvent { public listen(): void { @@ -10,8 +12,12 @@ export default class ItemCreateEvent extends BaseEvent { try { if (!(await this.isCharacterGM())) return + const spriteRepository = new SpriteRepository() + const sprite = await spriteRepository.getFirst() + if (!sprite) return callback(false) + const newItem = new Item() - await newItem.setName('New Item').setItemType('WEAPON').setStackable(false).setRarity('COMMON').setSprite(null).save() + await newItem.setName('New Item').setItemType(ItemType.WEAPON).setStackable(false).setRarity(ItemRarity.COMMON).setSprite(sprite).save() return callback(true, newItem) } catch (error) { diff --git a/src/managers/userManager.ts b/src/managers/userManager.ts index d670a27..946d43b 100644 --- a/src/managers/userManager.ts +++ b/src/managers/userManager.ts @@ -1,6 +1,5 @@ -import { User } from '@prisma/client' - import Logger, { LoggerType } from '#application/logger' +import { User } from '#entities/user' type TLoggedInUsers = { users: User[] diff --git a/src/repositories/spriteRepository.ts b/src/repositories/spriteRepository.ts index a686e0b..8da8294 100644 --- a/src/repositories/spriteRepository.ts +++ b/src/repositories/spriteRepository.ts @@ -23,6 +23,18 @@ class SpriteRepository extends BaseRepository { return [] } } + + async getFirst(populate?: any): Promise { + try { + const repository = this.getEntityManager().getRepository(Sprite) + const result = await repository.findOne({ id: { $exists: true } }, { populate }) + if (result) result.setEntityManager(this.getEntityManager()) + + return result + } catch (error: any) { + return null + } + } } export default SpriteRepository