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