"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.ApproveAllNewStatesCommand = void 0; const Result_1 = require("../../../../shared/domain/Result"); const VisualBaseline_1 = require("../../domain/entities/VisualBaseline"); const UniqueId_1 = require("../../../../shared/domain/UniqueId"); class ApproveAllNewStatesCommand { constructor(comparisonRepo, baselineRepo, eventBus) { this.comparisonRepo = comparisonRepo; this.baselineRepo = baselineRepo; this.eventBus = eventBus; } async execute(req) { const pending = await this.comparisonRepo.findByStatus(req.sessionId, 'new_state'); let approved = 0; for (const comparison of pending) { 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: '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(); approved++; } return (0, Result_1.Ok)({ approved }); } } exports.ApproveAllNewStatesCommand = ApproveAllNewStatesCommand;