mantra_schema/report/
source_folder.rs1use relative_path::RelativePathBuf;
2
3use crate::{
4 product::ProductId,
5 report::{product::ProductMetadata, sources::SourceProductCoverageSummary},
6};
7
8#[derive(Debug, Clone, PartialEq, serde::Serialize, serde::Deserialize, schemars::JsonSchema)]
9#[serde(rename_all = "snake_case")]
10pub struct SourceFolderReportSchema {
11 #[serde(serialize_with = "crate::serialize_schema_version")]
14 pub schema_version: Option<String>,
15 #[schemars(with = "String")]
16 pub path: RelativePathBuf,
17 pub folder: Option<Vec<SourceChildReference>>,
18 pub files: Option<Vec<SourceChildReference>>,
19 pub product_coverage: Option<Vec<SourceFolderProductCoverage>>,
20 pub collected_by: Vec<ProductMetadata>,
21}
22
23#[derive(Debug, Clone, PartialEq, serde::Serialize, serde::Deserialize, schemars::JsonSchema)]
24#[serde(rename_all = "snake_case")]
25pub struct SourceFolderProductCoverage {
26 pub product: ProductMetadata,
27 pub summary: SourceProductCoverageSummary,
28}
29
30#[derive(Debug, Clone, PartialEq, serde::Serialize, serde::Deserialize, schemars::JsonSchema)]
31#[serde(rename_all = "snake_case")]
32pub struct SourceChildReference {
33 pub collected_by: Vec<ProductId>,
34 pub name: String,
35}