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 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}