39 lines
1.6 KiB
JavaScript
39 lines
1.6 KiB
JavaScript
"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;
|