UNPKG

mira-app-server

Version:

Mira Server - standalone server application using mira-app-core

61 lines 3.03 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.FileHandler = void 0; const MessageHandler_1 = require("./MessageHandler"); class FileHandler extends MessageHandler_1.MessageHandler { constructor(server, dbService, ws, message) { super(server, dbService, ws, message); } async handle() { try { const message = this.message; const { action, payload } = message; const { data } = payload; const libraryId = message.libraryId; let result; switch (action) { case 'read': result = await this.dbService.getFiles({ filters: data?.query ?? {}, isUrlFile: true, }); break; case 'create': const path = data.path; result = path != null ? await this.dbService.createFileFromPath(path, data) : await this.dbService.createFile(data); this.server.broadcastPluginEvent('file::created', { message, result, libraryId }); this.server.sendToWebsocket(this.ws, { eventName: 'file::uploaded', data: { path } }); this.server.broadcastLibraryEvent(libraryId, 'file::created', result); break; case 'update': const { success: updateOk, oldData } = await this.dbService.updateFile(data.id, data); result = await this.dbService.getFile(data.id); this.server.broadcastPluginEvent('file::updated', { message, result, libraryId }); this.server.broadcastLibraryEvent(libraryId, 'file::updated', { ...result, libraryId, old_data: oldData }); break; case 'recover': var { id } = data; if (await this.dbService.recoverFile(id)) { this.server.broadcastPluginEvent('file::recovered', { id, libraryId }); this.server.sendToWebsocket(this.ws, { eventName: 'file::recovered', data: { id, libraryId } }); } break; case 'delete': var { id, moveToRecycleBin } = data; if (await this.dbService.deleteFile(id, { moveToRecycleBin })) { this.server.broadcastPluginEvent('file::deleted', { id, libraryId }); this.server.sendToWebsocket(this.ws, { eventName: 'file::deleted', data: { id, libraryId } }); } break; default: throw new Error(`Unsupported file action: ${action}`); } this.sendResponse(result); } catch (err) { this.sendError(err instanceof Error ? err.message : 'File operation failed'); } } } exports.FileHandler = FileHandler; //# sourceMappingURL=FileHandler.js.map