qlty_coverage/publish/
report.rs1use std::path::PathBuf;
2
3use anyhow::Result;
4use qlty_cloud::export::CoverageExport;
5use qlty_types::tests::v1::{CoverageMetadata, FileCoverage, ReportFile};
6use serde::Serialize;
7
8#[derive(Debug, Clone, Default, Serialize)]
9pub struct Report {
10 pub metadata: CoverageMetadata,
11 pub report_files: Vec<ReportFile>,
12 pub file_coverages: Vec<FileCoverage>,
13}
14
15impl Report {
16 pub fn set_upload_id(&mut self, upload_id: &str) {
17 self.metadata.upload_id = upload_id.to_string();
18 }
19
20 pub fn set_project_id(&mut self, project_id: &str) {
21 self.metadata.project_id = Some(project_id.to_string());
22
23 self.report_files.iter_mut().for_each(|f| {
24 f.project_id = Some(project_id.to_string());
25 });
26
27 self.file_coverages.iter_mut().for_each(|f| {
28 f.project_id = Some(project_id.to_string());
29 });
30 }
31
32 pub fn export_to(&self, directory: Option<PathBuf>) -> Result<CoverageExport> {
33 let mut exporter = CoverageExport {
34 metadata: self.metadata.clone(),
35 report_files: self.report_files.clone(),
36 file_coverages: self.file_coverages.clone(),
37 ..Default::default()
38 };
39
40 exporter.export_to(directory)?;
41 Ok(exporter)
42 }
43}