hvym_file_token/
filemetadata.rs

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