mirror of
https://github.com/jeffusion/gitea-ai-assistant.git
synced 2026-03-27 10:05:50 +00:00
refactor(notification): replace static factory class with function exports
This commit is contained in:
@@ -8,7 +8,10 @@ export type {
|
|||||||
} from './types.js';
|
} from './types.js';
|
||||||
|
|
||||||
export { BaseNotificationService } from './base-notification-service.js';
|
export { BaseNotificationService } from './base-notification-service.js';
|
||||||
export { NotificationFactory } from './notification-factory.js';
|
export {
|
||||||
|
createNotificationService,
|
||||||
|
createNotificationServices,
|
||||||
|
} from './notification-factory.js';
|
||||||
export { NotificationManager, createNotificationManager } from './notification-manager.js';
|
export { NotificationManager, createNotificationManager } from './notification-manager.js';
|
||||||
export { FeishuNotificationService } from './providers/feishu-notification-service.js';
|
export { FeishuNotificationService } from './providers/feishu-notification-service.js';
|
||||||
export { WeComNotificationService } from './providers/wecom-notification-service.js';
|
export { WeComNotificationService } from './providers/wecom-notification-service.js';
|
||||||
|
|||||||
@@ -1,25 +1,20 @@
|
|||||||
import type {
|
|
||||||
INotificationService,
|
|
||||||
NotificationServiceConfig,
|
|
||||||
} from './types.js';
|
|
||||||
import { FeishuNotificationService } from './providers/feishu-notification-service.js';
|
import { FeishuNotificationService } from './providers/feishu-notification-service.js';
|
||||||
import { WeComNotificationService } from './providers/wecom-notification-service.js';
|
import { WeComNotificationService } from './providers/wecom-notification-service.js';
|
||||||
|
import type { INotificationService, NotificationServiceConfig } from './types.js';
|
||||||
|
|
||||||
export class NotificationFactory {
|
export function createNotificationService(config: NotificationServiceConfig): INotificationService {
|
||||||
static createService(config: NotificationServiceConfig): INotificationService {
|
switch (config.provider) {
|
||||||
switch (config.provider) {
|
case 'feishu':
|
||||||
case 'feishu':
|
return new FeishuNotificationService(config);
|
||||||
return new FeishuNotificationService(config);
|
case 'wecom':
|
||||||
case 'wecom':
|
return new WeComNotificationService(config);
|
||||||
return new WeComNotificationService(config);
|
default:
|
||||||
default:
|
throw new Error(`Unknown notification provider: ${config.provider}`);
|
||||||
throw new Error(`Unknown notification provider: ${config.provider}`);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
static createServices(configs: NotificationServiceConfig[]): INotificationService[] {
|
|
||||||
return configs
|
|
||||||
.filter((c) => c.enabled && c.webhookUrl)
|
|
||||||
.map((c) => this.createService(c));
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export function createNotificationServices(
|
||||||
|
configs: NotificationServiceConfig[]
|
||||||
|
): INotificationService[] {
|
||||||
|
return configs.filter((c) => c.enabled && c.webhookUrl).map((c) => createNotificationService(c));
|
||||||
|
}
|
||||||
|
|||||||
@@ -1,11 +1,11 @@
|
|||||||
|
import { logger } from '../../utils/logger.js';
|
||||||
|
import { createNotificationServices } from './notification-factory.js';
|
||||||
import type {
|
import type {
|
||||||
INotificationService,
|
INotificationService,
|
||||||
NotificationContext,
|
NotificationContext,
|
||||||
NotificationMessage,
|
NotificationMessage,
|
||||||
NotificationProvider,
|
NotificationProvider,
|
||||||
} from './types.js';
|
} from './types.js';
|
||||||
import { NotificationFactory } from './notification-factory.js';
|
|
||||||
import { logger } from '../../utils/logger.js';
|
|
||||||
|
|
||||||
export class NotificationManager {
|
export class NotificationManager {
|
||||||
private services: INotificationService[] = [];
|
private services: INotificationService[] = [];
|
||||||
@@ -100,6 +100,6 @@ export class NotificationManager {
|
|||||||
export function createNotificationManager(
|
export function createNotificationManager(
|
||||||
configs: import('./types.js').NotificationServiceConfig[]
|
configs: import('./types.js').NotificationServiceConfig[]
|
||||||
): NotificationManager {
|
): NotificationManager {
|
||||||
const services = NotificationFactory.createServices(configs);
|
const services = createNotificationServices(configs);
|
||||||
return new NotificationManager(services);
|
return new NotificationManager(services);
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user