1 changed files with 29 additions and 0 deletions
@ -0,0 +1,29 @@ |
|||
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); |
|||
} |
|||
Loading…
Reference in new issue