ic-query 0.2.13

Internet Computer query CLI for NNS, SNS, and related public network metadata
Documentation
use crate::nns::{
    data_center::report::NnsDataCenterListReport, node::report::NnsNodeListReport,
    node_operator::report::NnsNodeOperatorListReport,
    node_provider::report::NnsNodeProviderListReport,
};

use super::super::relations::TopologyRelationIndex;

///
/// NnsTopologyJoinCoverageCounts
///
pub(super) struct NnsTopologyJoinCoverageCounts {
    pub(super) nodes_with_known_node_provider_count: usize,
    pub(super) nodes_with_known_node_operator_count: usize,
    pub(super) nodes_with_known_data_center_count: usize,
    pub(super) node_operators_with_known_node_provider_count: usize,
    pub(super) node_operators_with_known_data_center_count: usize,
}

pub(super) fn topology_summary_join_coverage_counts(
    node_report: &NnsNodeListReport,
    node_provider_report: &NnsNodeProviderListReport,
    node_operator_report: &NnsNodeOperatorListReport,
    data_center_report: &NnsDataCenterListReport,
) -> NnsTopologyJoinCoverageCounts {
    let index = TopologyRelationIndex::from_reports(
        node_provider_report,
        node_operator_report,
        data_center_report,
    );

    NnsTopologyJoinCoverageCounts {
        nodes_with_known_node_provider_count: index
            .nodes_with_known_node_provider_count(node_report),
        nodes_with_known_node_operator_count: index
            .nodes_with_known_node_operator_count(node_report),
        nodes_with_known_data_center_count: index.nodes_with_known_data_center_count(node_report),
        node_operators_with_known_node_provider_count: index
            .node_operators_with_known_node_provider_count(node_operator_report),
        node_operators_with_known_data_center_count: index
            .node_operators_with_known_data_center_count(node_operator_report),
    }
}