You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
29 lines
774 B
29 lines
774 B
import log4js from "logger";
|
|
|
|
const logger = log4js.getLogger("SCHEDULER");
|
|
|
|
export type TaskHandler = (
|
|
payload?: Record<string, unknown>
|
|
) => Promise<{ success: boolean; message: string }>;
|
|
|
|
const registry = new Map<string, TaskHandler>();
|
|
|
|
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);
|
|
}
|
|
|