Skip to main content

mantra_schema/report/
source_folder.rs

1use 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    /// The schema version.
12    /// [req("exchange.versioned")]
13    #[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}