database_reflection/metadata/
with_metadata.rs

1use std::collections::HashMap;
2
3pub trait WithMetadata {
4    /// Borrow metadata container for reading
5    fn get_metadata(&self) -> &HashMap<String, String>;
6
7    /// Borrow metadata container for writing
8    fn get_metadata_mut(&mut self) -> &mut HashMap<String, String>;
9
10    /// Set metadata key value pair
11    fn set_meta(&mut self, meta_key: impl ToString, meta_value: impl ToString) -> &mut Self {
12        self.get_metadata_mut()
13            .insert(meta_key.to_string(), meta_value.to_string());
14
15        self
16    }
17
18    /// Set metadata flag
19    fn set_meta_flag(&mut self, meta_flag: impl ToString) -> &mut Self {
20        self.get_metadata_mut()
21            .insert(meta_flag.to_string(), "1".to_string());
22
23        self
24    }
25
26    /// Check if metadata flag is set
27    fn meta_flag(&self, flag: &str) -> bool {
28        self.get_metadata().contains_key(flag)
29    }
30
31    /// Get metadata value by key
32    fn meta(&self, key: &str) -> Option<String> {
33        self.get_metadata().get(key).cloned()
34    }
35}