diff --git a/src/entities/item.ts b/src/entities/item.ts index 0b83f22..1ec5aac 100644 --- a/src/entities/item.ts +++ b/src/entities/item.ts @@ -18,7 +18,7 @@ export class Item extends BaseEntity { name!: string @Property() - description?: string + description: string = '' @Enum(() => ItemType) itemType!: ItemType diff --git a/src/events/gameMaster/assetManager/characterHair/create.ts b/src/events/gameMaster/assetManager/characterHair/create.ts index cbd8df4..eabfdd4 100644 --- a/src/events/gameMaster/assetManager/characterHair/create.ts +++ b/src/events/gameMaster/assetManager/characterHair/create.ts @@ -1,6 +1,5 @@ import { BaseEvent } from '#application/base/baseEvent' import { CharacterHair } from '#entities/characterHair' -import characterRepository from '#repositories/characterRepository' export default class CharacterHairCreateEvent extends BaseEvent { public listen(): void { diff --git a/src/events/gameMaster/assetManager/characterHair/update.ts b/src/events/gameMaster/assetManager/characterHair/update.ts index 64bdf8d..aebf6c5 100644 --- a/src/events/gameMaster/assetManager/characterHair/update.ts +++ b/src/events/gameMaster/assetManager/characterHair/update.ts @@ -2,7 +2,6 @@ import { BaseEvent } from '#application/base/baseEvent' import { CharacterGender } from '#application/enums' import { UUID } from '#application/types' import CharacterHairRepository from '#repositories/characterHairRepository' -import characterRepository from '#repositories/characterRepository' import SpriteRepository from '#repositories/spriteRepository' type Payload = { diff --git a/src/events/gameMaster/assetManager/characterType/update.ts b/src/events/gameMaster/assetManager/characterType/update.ts index 4f048ee..47107a7 100644 --- a/src/events/gameMaster/assetManager/characterType/update.ts +++ b/src/events/gameMaster/assetManager/characterType/update.ts @@ -1,4 +1,3 @@ -import CharacterRepository from '#repositories/characterRepository' import { UUID } from '#application/types' import { BaseEvent } from '#application/base/baseEvent' import CharacterTypeRepository from '#repositories/characterTypeRepository' diff --git a/src/events/gameMaster/assetManager/item/update.ts b/src/events/gameMaster/assetManager/item/update.ts index e4c494d..ea2b84d 100644 --- a/src/events/gameMaster/assetManager/item/update.ts +++ b/src/events/gameMaster/assetManager/item/update.ts @@ -1,55 +1,49 @@ -import { ItemType, ItemRarity } from '@prisma/client' -import { Server } from 'socket.io' - -import { gameMasterLogger } from '#application/logger' -import prisma from '#application/prisma' -import { TSocket } from '#application/types' -import characterRepository from '#repositories/characterRepository' +import { BaseEvent } from '#application/base/baseEvent' +import ItemRepository from '#repositories/itemRepository' +import { ItemType, ItemRarity } from '#application/enums' +import { UUID } from '#application/types' +import SpriteRepository from '#repositories/spriteRepository' type Payload = { - id: string + id: UUID name: string - description: string | null + description: string itemType: ItemType stackable: boolean rarity: ItemRarity - spriteId: string | null + spriteId: UUID } -export default class ItemUpdateEvent { - constructor( - private readonly io: Server, - private readonly socket: TSocket - ) {} - +export default class ItemUpdateEvent extends BaseEvent { public listen(): void { this.socket.on('gm:item:update', this.handleEvent.bind(this)) } private async handleEvent(data: Payload, callback: (success: boolean) => void): Promise { - const character = await characterRepository.getById(this.socket.characterId as number) - if (!character) return callback(false) - - if (character.role !== 'gm') { - return callback(false) - } try { - await prisma.item.update({ - where: { id: data.id }, - data: { - name: data.name, - description: data.description, - itemType: data.itemType, - stackable: data.stackable, - rarity: data.rarity, - spriteId: data.spriteId - } - }) + if (!(await this.isCharacterGM())) return + + const itemRepository = new ItemRepository() + const item = await itemRepository.getById(data.id) + if (!item) return callback(false) + + const spriteRepository = new SpriteRepository() + const sprite = await spriteRepository.getById(data.spriteId) + if (!sprite) return callback(false) + + await item + .setName(data.name) + .setDescription(data.description) + .setItemType(data.itemType) + .setStackable(data.stackable) + .setRarity(data.rarity) + .setSprite(sprite) + .save() return callback(true) } catch (error) { - gameMasterLogger.error(`Error updating item: ${error instanceof Error ? error.message : String(error)}`) + console.error(error) return callback(false) } }