"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.EnrichFindingCommand = void 0; const Result_1 = require("../../../../shared/domain/Result"); class EnrichFindingCommand { constructor(repository, enricher, eventBus) { this.repository = repository; this.enricher = enricher; this.eventBus = eventBus; } async execute(request) { const finding = await this.repository.findById(request.findingId); if (!finding) { return (0, Result_1.Err)(`Finding not found: ${request.findingId}`); } let enrichment; try { enrichment = await this.enricher.enrich(finding); } catch (e) { return (0, Result_1.Err)(`Enrichment failed: ${e instanceof Error ? e.message : String(e)}`); } finding.enrich(enrichment); await this.repository.update(finding); const events = finding.domainEvents; for (const event of events) { await this.eventBus.publish(event); } finding.clearEvents(); return (0, Result_1.Ok)({ findingId: finding.id.toString() }); } } exports.EnrichFindingCommand = EnrichFindingCommand;