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 name: String,
9    pub symbol: String,
10    pub ipfs_hash: String,
11    pub file_type: String,
12    pub gateways: String,
13    pub ipns_hash: Option<String>,
14}
15
16pub struct FileMetadata {
17    env: Env,
18}
19
20impl FileMetadata {
21    pub fn new(env: &Env) -> FileMetadata {
22        FileMetadata { env: env.clone() }
23    }
24
25    #[inline(always)]
26    pub fn set_metadata(&self, metadata: &FileTokenMetadata) {
27        self.env.storage().persistent().set(&METADATA_KEY, metadata);
28    }
29
30    #[inline(always)]
31    pub fn get_metadata(&self) -> FileTokenMetadata {
32        self.env
33            .storage()
34            .persistent()
35            .get(&METADATA_KEY)
36            .unwrap_optimized()
37    }
38}