hvym_node_token/
nodemetadata.rs

1use soroban_sdk::{contracttype, symbol_short, unwrap::UnwrapOptimized, Env, String, Symbol};
2
3const METADATA_KEY: Symbol = symbol_short!("HVYMNODE");
4
5#[derive(Clone, Debug, PartialEq, Eq, PartialOrd, Ord)]
6#[contracttype]
7pub struct NodeTokenMetadata {
8    pub decimal: u32,
9    pub name: String,
10    pub symbol: String,
11    pub node_id: String,
12    pub descriptor: String,
13    pub established: String,
14}
15
16pub struct NodeMetadata {
17    env: Env,
18}
19
20impl NodeMetadata {
21    pub fn new(env: &Env) -> NodeMetadata {
22        NodeMetadata { env: env.clone() }
23    }
24
25    #[inline(always)]
26    pub fn set_metadata(&self, metadata: &NodeTokenMetadata) {
27        self.env.storage().persistent().set(&METADATA_KEY, metadata);
28    }
29
30    #[inline(always)]
31    pub fn get_metadata(&self) -> NodeTokenMetadata {
32        self.env
33            .storage()
34            .persistent()
35            .get(&METADATA_KEY)
36            .unwrap_optimized()
37    }
38}