ic_query/sns/report/model/
identity.rs1use serde::{Deserialize, Serialize};
4
5#[derive(Clone, Debug, Deserialize, Eq, PartialEq, Serialize)]
12pub struct MainnetSnsCanisters {
13 pub root_canister_id: String,
15 pub governance_canister_id: String,
17 pub ledger_canister_id: String,
19 pub swap_canister_id: String,
21 pub index_canister_id: String,
23}
24
25#[derive(Clone, Debug, Deserialize, Eq, PartialEq, Serialize)]
32pub struct SnsInstanceContext {
33 pub network: String,
35 pub sns_wasm_canister_id: String,
37 pub fetched_at: String,
39 pub source_endpoint: String,
41 pub fetched_by: String,
43 pub id: usize,
45 pub name: String,
47 pub root_canister_id: String,
49}
50
51#[derive(Clone, Debug, Eq, PartialEq, Serialize)]
58pub struct SnsReportContext {
59 #[serde(flatten)]
61 pub instance: SnsInstanceContext,
62 pub governance_canister_id: String,
64}
65
66impl<'de> Deserialize<'de> for SnsReportContext {
67 fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
68 where
69 D: serde::Deserializer<'de>,
70 {
71 #[derive(Deserialize)]
73 struct Fields {
74 network: String,
75 sns_wasm_canister_id: String,
76 fetched_at: String,
77 source_endpoint: String,
78 fetched_by: String,
79 id: usize,
80 name: String,
81 root_canister_id: String,
82 governance_canister_id: String,
83 }
84 let fields = Fields::deserialize(deserializer)?;
85 Ok(Self {
86 instance: SnsInstanceContext {
87 network: fields.network,
88 sns_wasm_canister_id: fields.sns_wasm_canister_id,
89 fetched_at: fields.fetched_at,
90 source_endpoint: fields.source_endpoint,
91 fetched_by: fields.fetched_by,
92 id: fields.id,
93 name: fields.name,
94 root_canister_id: fields.root_canister_id,
95 },
96 governance_canister_id: fields.governance_canister_id,
97 })
98 }
99}