moved jobs to provider config

This commit is contained in:
Bojan Kucera 2025-06-08 15:03:30 -04:00
parent f9c2860ff4
commit 52c2f08db2
7 changed files with 183 additions and 76 deletions

View file

@ -4,10 +4,20 @@ export interface JobHandler {
(payload: any): Promise<any>;
}
export interface ScheduledJob {
type: string;
operation: string;
payload: any;
cronPattern: string;
priority?: number;
description?: string;
}
export interface ProviderConfig {
name: string;
service: string;
operations: Record<string, JobHandler>;
scheduledJobs?: ScheduledJob[];
}
export class ProviderRegistry {
@ -16,12 +26,12 @@ export class ProviderRegistry {
/**
* Register a provider with its operations
*/
registerProvider(config: ProviderConfig): void {
*/ registerProvider(config: ProviderConfig): void {
const key = `${config.service}:${config.name}`;
this.providers.set(key, config);
this.logger.info(`Registered provider: ${key}`, {
operations: Object.keys(config.operations)
operations: Object.keys(config.operations),
scheduledJobs: config.scheduledJobs?.length || 0
});
}
@ -49,6 +59,28 @@ export class ProviderRegistry {
/**
* Get all registered providers
*/
getAllScheduledJobs(): Array<{
service: string;
provider: string;
job: ScheduledJob;
}> {
const allJobs: Array<{ service: string; provider: string; job: ScheduledJob }> = [];
for (const [key, config] of this.providers) {
if (config.scheduledJobs) {
for (const job of config.scheduledJobs) {
allJobs.push({
service: config.service,
provider: config.name,
job
});
}
}
}
return allJobs;
}
getProviders(): Array<{ key: string; config: ProviderConfig }> {
return Array.from(this.providers.entries()).map(([key, config]) => ({
key,