use crate::subnet_catalog::{CatalogAssurance, ValidatedSubnetCatalog};
use serde::{Deserialize, Serialize};
#[derive(Clone, Debug, Deserialize, Eq, PartialEq, Serialize)]
pub struct SubnetCatalogReportMetadata {
pub registry_canister_id: String,
pub registry_version: u64,
pub assurance: CatalogAssurance,
pub source_endpoints: Vec<String>,
pub agreement_digest: Option<String>,
pub registry_query_call_count: u64,
pub routing_source: crate::subnet_catalog::SubnetCatalogRoutingSource,
pub registry_records: Vec<crate::subnet_catalog::SubnetCatalogRegistryRecordEvidence>,
pub catalog_digest: String,
pub fetched_at: String,
pub resolver_backend: String,
pub collector_version: String,
pub classification_schema_version: u32,
pub classification_policy_digest: String,
pub resolver_schema_version: u32,
}
impl SubnetCatalogReportMetadata {
pub(in crate::subnet_catalog) fn from_catalog(catalog: &ValidatedSubnetCatalog) -> Self {
let provenance = catalog.provenance();
Self {
registry_canister_id: provenance.registry_canister_id.clone(),
registry_version: provenance.registry_version,
assurance: provenance.assurance,
source_endpoints: provenance.source_endpoints.clone(),
agreement_digest: provenance.agreement_digest.clone(),
registry_query_call_count: provenance.registry_query_call_count,
routing_source: provenance.routing_source,
registry_records: provenance.registry_records.clone(),
catalog_digest: catalog.raw().catalog_digest.clone(),
fetched_at: provenance.fetched_at.clone(),
resolver_backend: provenance.resolver_backend.clone(),
collector_version: provenance.collector_version.clone(),
classification_schema_version: provenance.classification_schema_version,
classification_policy_digest: provenance.classification_policy_digest.clone(),
resolver_schema_version: provenance.resolver_schema_version,
}
}
}