random-tables-mcp
Version:
An MCP (Model Context Protocol) server for managing and rolling on random-table assets used in tabletop RPGs. Create, update, and roll on random tables with support for nested tables, weighted entries, and range-based results.
73 lines • 2.94 kB
JavaScript
/**
* Implementation of the RollTemplateService interface.
*/
export class RollTemplateServiceImpl {
/**
* Creates a new RollTemplateServiceImpl instance.
* @param createTemplateUseCase The use case for creating templates.
* @param getTemplateUseCase The use case for getting templates.
* @param listTemplatesUseCase The use case for listing templates.
* @param updateTemplateUseCase The use case for updating templates.
* @param deleteTemplateUseCase The use case for deleting templates.
* @param evaluateTemplateUseCase The use case for evaluating templates.
*/
constructor(createTemplateUseCase, getTemplateUseCase, listTemplatesUseCase, updateTemplateUseCase, deleteTemplateUseCase, evaluateTemplateUseCase) {
this.createTemplateUseCase = createTemplateUseCase;
this.getTemplateUseCase = getTemplateUseCase;
this.listTemplatesUseCase = listTemplatesUseCase;
this.updateTemplateUseCase = updateTemplateUseCase;
this.deleteTemplateUseCase = deleteTemplateUseCase;
this.evaluateTemplateUseCase = evaluateTemplateUseCase;
}
/**
* Creates a new roll template.
* @param name Template name.
* @param description Template description.
* @param template The template string.
* @returns The ID of the created template.
*/
async createTemplate(name, description, template) {
return await this.createTemplateUseCase.execute(name, description, template);
}
/**
* Gets a template by its ID.
* @param id The ID of the template to get.
* @returns The template, or null if not found.
*/
async getTemplate(id) {
return await this.getTemplateUseCase.execute(id);
}
/**
* Updates an existing template.
* @param id The ID of the template to update.
* @param updates Object containing the updates to apply.
*/
async updateTemplate(id, updates) {
await this.updateTemplateUseCase.execute(id, updates);
}
/**
* Lists templates based on optional filter criteria.
* @param filter Optional filter criteria.
* @returns An array of templates matching the filter.
*/
async listTemplates(filter) {
return await this.listTemplatesUseCase.execute(filter);
}
/**
* Deletes a template by its ID.
* @param id The ID of the template to delete.
*/
async deleteTemplate(id) {
await this.deleteTemplateUseCase.execute(id);
}
/**
* Evaluates a template by resolving all references to tables.
* @param id The ID of the template to evaluate.
* @param count The number of evaluations to perform (default: 1).
* @returns An array of template evaluation results.
*/
async evaluateTemplate(id, count = 1) {
return await this.evaluateTemplateUseCase.execute(id, count);
}
}
//# sourceMappingURL=roll-template-service-impl.js.map