diff --git a/server/scheduler/registry.ts b/server/scheduler/registry.ts new file mode 100644 index 0000000..2232e1c --- /dev/null +++ b/server/scheduler/registry.ts @@ -0,0 +1,29 @@ +import log4js from "logger"; + +const logger = log4js.getLogger("SCHEDULER"); + +export type TaskHandler = ( + payload?: Record +) => Promise<{ success: boolean; message: string }>; + +const registry = new Map(); + +export function registerTask(name: string, handler: TaskHandler): void { + if (registry.has(name)) { + logger.warn("Task '%s' is already registered, overwriting", name); + } + registry.set(name, handler); + logger.info("Registered task: %s", name); +} + +export function hasTask(name: string): boolean { + return registry.has(name); +} + +export function listRegisteredTasks(): string[] { + return Array.from(registry.keys()); +} + +export function getTaskHandler(name: string): TaskHandler | undefined { + return registry.get(name); +}