hvym_file_token/
filemetadata.rs1use 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}