1
0
forked from noxious/server

Storage class is now OOP

This commit is contained in:
2025-01-01 21:34:23 +01:00
parent 04e081c31a
commit 5982422e04
15 changed files with 109 additions and 72 deletions

View File

@ -4,7 +4,7 @@ import { Server } from 'socket.io'
import { gameLogger, gameMasterLogger } from '#application/logger'
import prisma from '#application/prisma'
import { getPublicPath } from '#application/storage'
import Storage from '#application/storage'
import { TSocket } from '#application/types'
import characterRepository from '#repositories/characterRepository'
@ -38,10 +38,10 @@ export default class ObjectRemoveEvent {
})
// get root path
const public_folder = getPublicPath('objects')
const public_folder = Storage.getPublicPath('objects')
// remove the tile from the disk
const finalFilePath = getPublicPath('objects', data.object + '.png')
const finalFilePath = Storage.getPublicPath('objects', data.object + '.png')
fs.unlink(finalFilePath, (err) => {
if (err) {
gameMasterLogger.error(`Error deleting object ${data.object}: ${err.message}`)

View File

@ -6,7 +6,7 @@ import { Server } from 'socket.io'
import { gameMasterLogger } from '#application/logger'
import prisma from '#application/prisma'
import { getPublicPath } from '#application/storage'
import Storage from '#application/storage'
import { TSocket } from '#application/types'
import characterRepository from '#repositories/characterRepository'
@ -32,7 +32,7 @@ export default class ObjectUploadEvent {
if (character.role !== 'gm') {
return callback(false)
}
const public_folder = getPublicPath('objects')
const public_folder = Storage.getPublicPath('objects')
// Ensure the folder exists
await fs.mkdir(public_folder, { recursive: true })
@ -56,7 +56,7 @@ export default class ObjectUploadEvent {
const uuid = object.id
const filename = `${uuid}.png`
const finalFilePath = getPublicPath('objects', filename)
const finalFilePath = Storage.getPublicPath('objects', filename)
await writeFile(finalFilePath, objectData)
gameMasterLogger.info('gm:object:upload', `Object ${key} uploaded with id ${uuid}`)

View File

@ -3,7 +3,7 @@ import fs from 'fs/promises'
import { Server } from 'socket.io'
import prisma from '#application/prisma'
import { getPublicPath } from '#application/storage'
import Storage from '#application/storage'
import { TSocket } from '#application/types'
import characterRepository from '#repositories/characterRepository'
@ -26,7 +26,7 @@ export default class SpriteCreateEvent {
return callback(false)
}
const public_folder = getPublicPath('sprites')
const public_folder = Storage.getPublicPath('sprites')
// Ensure the folder exists
await fs.mkdir(public_folder, { recursive: true })
@ -39,7 +39,7 @@ export default class SpriteCreateEvent {
const uuid = sprite.id
// Create folder with uuid
const sprite_folder = getPublicPath('sprites', uuid)
const sprite_folder = Storage.getPublicPath('sprites', uuid)
await fs.mkdir(sprite_folder, { recursive: true })
callback(true)

View File

@ -4,7 +4,7 @@ import { Server } from 'socket.io'
import { gameMasterLogger } from '#application/logger'
import prisma from '#application/prisma'
import { getPublicPath } from '#application/storage'
import Storage from '#application/storage'
import { TSocket } from '#application/types'
import CharacterRepository from '#repositories/characterRepository'
@ -19,7 +19,7 @@ export default class GMSpriteDeleteEvent {
private readonly io: Server,
private readonly socket: TSocket
) {
this.public_folder = getPublicPath('sprites')
this.public_folder = Storage.getPublicPath('sprites')
}
public listen(): void {
@ -45,7 +45,7 @@ export default class GMSpriteDeleteEvent {
}
private async deleteSpriteFolder(spriteId: string): Promise<void> {
const finalFilePath = getPublicPath('sprites', spriteId)
const finalFilePath = Storage.getPublicPath('sprites', spriteId)
if (fs.existsSync(finalFilePath)) {
await fs.promises.rmdir(finalFilePath, { recursive: true })

View File

@ -7,7 +7,7 @@ import type { Prisma, SpriteAction } from '@prisma/client'
import { gameMasterLogger } from '#application/logger'
import prisma from '#application/prisma'
import { getPublicPath } from '#application/storage'
import Storage from '#application/storage'
import { TSocket } from '#application/types'
import CharacterRepository from '#repositories/characterRepository'
@ -314,13 +314,13 @@ export default class SpriteUpdateEvent {
}
private async saveSpritesToDisk(id: string, actions: ProcessedSpriteAction[]): Promise<void> {
const publicFolder = getPublicPath('sprites', id)
const publicFolder = Storage.getPublicPath('sprites', id)
await mkdir(publicFolder, { recursive: true })
await Promise.all(
actions.map(async (action) => {
const spritesheet = await this.createSpritesheet(action.buffersWithDimensions)
await writeFile(getPublicPath('sprites', id, `${action.action}.png`), spritesheet)
await writeFile(Storage.getPublicPath('sprites', id, `${action.action}.png`), spritesheet)
})
)
}

View File

@ -4,7 +4,7 @@ import { Server } from 'socket.io'
import { gameMasterLogger } from '#application/logger'
import prisma from '#application/prisma'
import { getPublicPath } from '#application/storage'
import Storage from '#application/storage'
import { TSocket } from '#application/types'
import characterRepository from '#repositories/characterRepository'
@ -19,7 +19,7 @@ export default class GMTileDeleteEvent {
private readonly io: Server,
private readonly socket: TSocket
) {
this.public_folder = getPublicPath('tiles')
this.public_folder = Storage.getPublicPath('tiles')
}
public listen(): void {
@ -56,7 +56,7 @@ export default class GMTileDeleteEvent {
}
private async deleteTileFile(tileId: string): Promise<void> {
const finalFilePath = getPublicPath('tiles', `${tileId}.png`)
const finalFilePath = Storage.getPublicPath('tiles', `${tileId}.png`)
try {
await fs.unlink(finalFilePath)
} catch (error: any) {

View File

@ -5,7 +5,7 @@ import { Server } from 'socket.io'
import { gameMasterLogger } from '#application/logger'
import prisma from '#application/prisma'
import { getPublicPath } from '#application/storage'
import Storage from '#application/storage'
import { TSocket } from '#application/types'
import characterRepository from '#repositories/characterRepository'
@ -32,7 +32,7 @@ export default class TileUploadEvent {
return
}
const public_folder = getPublicPath('tiles')
const public_folder = Storage.getPublicPath('tiles')
// Ensure the folder exists
await fs.mkdir(public_folder, { recursive: true })
@ -45,7 +45,7 @@ export default class TileUploadEvent {
})
const uuid = tile.id
const filename = `${uuid}.png`
const finalFilePath = getPublicPath('tiles', filename)
const finalFilePath = Storage.getPublicPath('tiles', filename)
await writeFile(finalFilePath, tileData)
})