UNPKG

solidworks-mcp-server

Version:

Clean Architecture SolidWorks MCP Server - Production-ready with SOLID principles

59 lines 1.78 kB
/** * Query Bus Implementation * Handles query execution for read operations */ import { ResultUtil } from '../../core/interfaces/core-abstractions.js'; export class QueryBus { logger; handlers = new Map(); constructor(logger) { this.logger = logger; } /** * Register a query handler */ register(queryName, handler) { if (this.handlers.has(queryName)) { this.logger.warn(`Query handler ${queryName} is already registered`); } this.handlers.set(queryName, handler); this.logger.debug(`Registered query handler: ${queryName}`); } /** * Execute a query */ async execute(queryName, params) { try { const handler = this.handlers.get(queryName); if (!handler) { return ResultUtil.fail(new Error(`No handler registered for query: ${queryName}`)); } this.logger.debug(`Executing query: ${queryName}`, { params }); const result = await handler.handle(params); if (ResultUtil.isSuccess(result)) { this.logger.debug(`Query executed successfully: ${queryName}`); } else { this.logger.warn(`Query failed: ${queryName}`, { error: result.error }); } return result; } catch (error) { this.logger.error(`Unexpected error executing query: ${queryName}`, error); return ResultUtil.fail(error); } } /** * Check if a handler is registered */ hasHandler(queryName) { return this.handlers.has(queryName); } /** * Clear all handlers */ clear() { this.handlers.clear(); } } //# sourceMappingURL=query-bus.js.map