Skip to main content

ic_query/nns/node_operator/report/model/
report.rs

1#[cfg(feature = "nns-host")]
2use crate::cache_file::JsonCacheReport;
3use serde::{Deserialize, Serialize};
4
5///
6/// NnsNodeOperatorListReport
7///
8/// Complete NNS node operator inventory report with source metadata.
9///
10
11#[derive(Clone, Debug, Deserialize, Eq, PartialEq, Serialize)]
12#[serde(deny_unknown_fields)]
13pub struct NnsNodeOperatorListReport {
14    pub schema_version: u32,
15    pub network: String,
16    pub registry_canister_id: String,
17    pub registry_version: u64,
18    pub fetched_at: String,
19    pub source_endpoint: String,
20    pub fetched_by: String,
21    pub node_operator_count: usize,
22    pub node_operators: Vec<NnsNodeOperatorRow>,
23}
24
25#[cfg(feature = "nns-host")]
26impl JsonCacheReport for NnsNodeOperatorListReport {
27    fn schema_version(&self) -> u32 {
28        self.schema_version
29    }
30
31    fn network(&self) -> &str {
32        &self.network
33    }
34}
35
36#[cfg(feature = "nns-host")]
37impl_nns_inventory_report!(
38    NnsNodeOperatorListReport,
39    super::super::NNS_NODE_OPERATOR_LIST_REPORT_SCHEMA_VERSION,
40    "node_operator",
41    node_operator_count,
42    node_operators,
43    |_report: &NnsNodeOperatorListReport| None,
44);
45
46///
47/// NnsNodeOperatorRow
48///
49/// One node operator row projected from the NNS registry inventory.
50///
51
52#[derive(Clone, Debug, Deserialize, Eq, PartialEq, Serialize)]
53pub struct NnsNodeOperatorRow {
54    pub node_operator_principal: String,
55    pub node_provider_principal: String,
56    pub node_allowance: u64,
57    pub data_center_id: String,
58    pub node_count: Option<u32>,
59}
60
61///
62/// NnsNodeOperatorInfoReport
63///
64/// Detailed report for one resolved NNS node operator.
65///
66
67#[derive(Clone, Debug, Deserialize, Eq, PartialEq, Serialize)]
68pub struct NnsNodeOperatorInfoReport {
69    pub schema_version: u32,
70    pub input: String,
71    pub resolved_from: String,
72    pub network: String,
73    pub registry_canister_id: String,
74    pub registry_version: u64,
75    pub fetched_at: String,
76    pub source_endpoint: String,
77    pub fetched_by: String,
78    pub node_operator_principal: String,
79    pub node_provider_principal: String,
80    pub node_allowance: u64,
81    pub data_center_id: String,
82    pub node_count: Option<u32>,
83}