/** * Infrastructure Adapter: DiscordNotificationAdapter (Stub) * * Handles Discord webhook notifications. * Currently a stub - to be implemented when Discord integration is needed. */ import type { Notification } from '@core/notifications/domain/entities/Notification'; import type { NotificationGateway, NotificationDeliveryResult } from '@core/notifications/application/ports/NotificationGateway'; import type { NotificationChannel } from '@core/notifications/domain/types/NotificationTypes'; export interface DiscordAdapterConfig { webhookUrl?: string; } export class DiscordNotificationAdapter implements NotificationGateway { private readonly channel: NotificationChannel = 'discord'; private webhookUrl: string | undefined; constructor(config: DiscordAdapterConfig = {}) { this.webhookUrl = config.webhookUrl; } async send(notification: Notification): Promise { if (!this.isConfigured()) { return { success: false, channel: this.channel, error: 'Discord webhook URL not configured', attemptedAt: new Date(), }; } // TODO: Implement actual Discord webhook call // For now, this is a stub that logs and returns success console.log(`[Discord Stub] Would send notification to ${this.webhookUrl}:`, { title: notification.title, body: notification.body, type: notification.type, }); return { success: true, channel: this.channel, externalId: `discord-stub-${notification.id}`, attemptedAt: new Date(), }; } supportsChannel(channel: NotificationChannel): boolean { return channel === this.channel; } isConfigured(): boolean { return !!this.webhookUrl; } getChannel(): NotificationChannel { return this.channel; } /** * Configure the webhook URL */ setWebhookUrl(url: string): void { this.webhookUrl = url; } }