diff --git a/src/events/gameMaster/assetManager/tile/list.ts b/src/events/gameMaster/assetManager/tile/list.ts index 777d7b0..180ad3a 100644 --- a/src/events/gameMaster/assetManager/tile/list.ts +++ b/src/events/gameMaster/assetManager/tile/list.ts @@ -1,24 +1,17 @@ -import { Tile } from '@prisma/client' -import { Server } from 'socket.io' - -import { TSocket } from '#application/types' import characterRepository from '#repositories/characterRepository' import TileRepository from '#repositories/tileRepository' +import { BaseEvent } from '#application/base/baseEvent' +import { Tile } from '#entities/tile' interface IPayload {} -export default class TileListEvent { - constructor( - private readonly io: Server, - private readonly socket: TSocket - ) {} - +export default class TileListEven extends BaseEvent { public listen(): void { this.socket.on('gm:tile:list', this.handleEvent.bind(this)) } - private async handleEvent(data: any, callback: (response: Tile[]) => void): Promise { - const character = await characterRepository.getById(this.socket.characterId as number) + private async handleEvent(data: IPayload, callback: (response: Tile[]) => void): Promise { + const character = await characterRepository.getById(this.socket.characterId!) if (!character) return if (character.role !== 'gm') { diff --git a/src/events/gameMaster/assetManager/tile/update.ts b/src/events/gameMaster/assetManager/tile/update.ts index 9d58fd6..fb85d6d 100644 --- a/src/events/gameMaster/assetManager/tile/update.ts +++ b/src/events/gameMaster/assetManager/tile/update.ts @@ -1,27 +1,21 @@ -import { Server } from 'socket.io' - -import prisma from '#application/prisma' -import { TSocket } from '#application/types' import characterRepository from '#repositories/characterRepository' +import { BaseEvent } from '#application/base/baseEvent' +import TileRepository from '#repositories/tileRepository' +import { UUID } from '#application/types' type Payload = { - id: string + id: UUID name: string tags: string[] } -export default class TileUpdateEvent { - constructor( - private readonly io: Server, - private readonly socket: TSocket - ) {} - +export default class TileUpdateEvent extends BaseEvent{ public listen(): void { this.socket.on('gm:tile: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) + const character = await characterRepository.getById(this.socket.characterId!) if (!character) return callback(false) if (character.role !== 'gm') { @@ -29,15 +23,10 @@ export default class TileUpdateEvent { } try { - const Tile = await prisma.tile.update({ - where: { - id: data.id - }, - data: { - name: data.name, - tags: data.tags - } - }) + const tile = await TileRepository.getById(data.id) + if (!tile) return callback(false) + + await tile.setName(data.name).setTags(data.tags).update() callback(true) } catch (error) { diff --git a/src/events/gameMaster/assetManager/tile/upload.ts b/src/events/gameMaster/assetManager/tile/upload.ts index dc47099..984bf23 100644 --- a/src/events/gameMaster/assetManager/tile/upload.ts +++ b/src/events/gameMaster/assetManager/tile/upload.ts @@ -1,31 +1,23 @@ import fs from 'fs/promises' import { writeFile } from 'node:fs/promises' -import { Server } from 'socket.io' - -import { gameMasterLogger } from '#application/logger' -import prisma from '#application/prisma' import Storage from '#application/storage' -import { TSocket } from '#application/types' import characterRepository from '#repositories/characterRepository' +import { BaseEvent } from '#application/base/baseEvent' +import { Tile } from '#entities/tile' interface ITileData { [key: string]: Buffer } -export default class TileUploadEvent { - constructor( - private readonly io: Server, - private readonly socket: TSocket - ) {} - +export default class TileUploadEvent extends BaseEvent { public listen(): void { this.socket.on('gm:tile:upload', this.handleEvent.bind(this)) } private async handleEvent(data: ITileData, callback: (response: boolean) => void): Promise { try { - const character = await characterRepository.getById(this.socket.characterId as number) + const character = await characterRepository.getById(this.socket.characterId!) if (!character) return callback(false) if (character.role !== 'gm') { @@ -38,12 +30,9 @@ export default class TileUploadEvent { await fs.mkdir(public_folder, { recursive: true }) const uploadPromises = Object.entries(data).map(async ([key, tileData]) => { - const tile = await prisma.tile.create({ - data: { - name: 'New tile' - } - }) - const uuid = tile.id + const tile = new Tile() + await tile.setName('New tile').save() + const uuid = tile.getId() const filename = `${uuid}.png` const finalFilePath = Storage.getPublicPath('tiles', filename) await writeFile(finalFilePath, tileData) @@ -53,7 +42,7 @@ export default class TileUploadEvent { callback(true) } catch (error) { - gameMasterLogger.error('Error uploading tile:', error) + this.logger.error('Error uploading tile:', error) callback(false) } }