solidworks-mcp-server
Version:
Clean Architecture SolidWorks MCP Server - Production-ready with SOLID principles
59 lines • 1.78 kB
JavaScript
/**
* 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