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