use super::super::NnsTopologyCoverageReport;
use super::common::render_join_coverage_table;
use crate::table::{ColumnAlign, render_table};
#[must_use]
pub fn nns_topology_coverage_report_text(report: &NnsTopologyCoverageReport) -> String {
let lines = [
render_coverage_count_table(report),
String::new(),
render_coverage_join_coverage_table(report),
];
lines.join("\n")
}
fn render_coverage_count_table(report: &NnsTopologyCoverageReport) -> String {
let headers = ["FIELD", "VALUE"];
let rows = [
["network".to_string(), report.network.clone()],
["nodes".to_string(), report.node_count.to_string()],
[
"node_operators".to_string(),
report.node_operator_count.to_string(),
],
[
"node_providers".to_string(),
report.node_provider_count.to_string(),
],
[
"data_centers".to_string(),
report.data_center_count.to_string(),
],
];
let alignments = [ColumnAlign::Left, ColumnAlign::Right];
render_table(&headers, &rows, &alignments)
}
fn render_coverage_join_coverage_table(report: &NnsTopologyCoverageReport) -> String {
render_join_coverage_table(&[
(
"nodes -> node providers",
report.nodes_with_known_node_provider_count,
report.nodes_with_unknown_node_provider_count,
),
(
"nodes -> node operators",
report.nodes_with_known_node_operator_count,
report.nodes_with_unknown_node_operator_count,
),
(
"nodes -> data centers",
report.nodes_with_known_data_center_count,
report.nodes_with_unknown_data_center_count,
),
(
"node operators -> node providers",
report.node_operators_with_known_node_provider_count,
report.node_operators_with_unknown_node_provider_count,
),
(
"node operators -> data centers",
report.node_operators_with_known_data_center_count,
report.node_operators_with_unknown_data_center_count,
),
])
}