"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.ApproveBaselineCommand = void 0; const Result_1 = require("../../../../shared/domain/Result"); const VisualBaseline_1 = require("../../domain/entities/VisualBaseline"); const UniqueId_1 = require("../../../../shared/domain/UniqueId"); class ApproveBaselineCommand { constructor(comparisonRepo, baselineRepo, eventBus) { this.comparisonRepo = comparisonRepo; this.baselineRepo = baselineRepo; this.eventBus = eventBus; } async execute(req) { const comparison = await this.comparisonRepo.findById(req.comparisonId); if (!comparison) { return (0, Result_1.Err)('Comparison not found'); } const baselineId = UniqueId_1.UniqueId.create(); const baseline = VisualBaseline_1.VisualBaseline.create({ stateId: comparison.stateId, url: comparison.sessionId, screenshotPath: comparison.currentScreenshotPath, width: 1280, height: 720, approvedAt: new Date(), approvedBy: req.approvedBy ?? 'user', }, baselineId); await this.baselineRepo.save(baseline); comparison.approve(baselineId.toString()); await this.comparisonRepo.update(comparison); for (const event of comparison.domainEvents) { await this.eventBus.publish(event); } comparison.clearEvents(); return (0, Result_1.Ok)({ baselineId: baselineId.toString() }); } } exports.ApproveBaselineCommand = ApproveBaselineCommand;