opendal_service_dashmap/
config.rs1use opendal_core::Configurator;
19use opendal_core::OperatorUri;
20use opendal_core::Result;
21use serde::Deserialize;
22use serde::Serialize;
23
24use super::backend::DashmapBuilder;
25
26#[derive(Default, Debug, Serialize, Deserialize, Clone, PartialEq, Eq)]
28#[serde(default)]
29#[non_exhaustive]
30pub struct DashmapConfig {
31 pub root: Option<String>,
33}
34
35impl Configurator for DashmapConfig {
36 type Builder = DashmapBuilder;
37 fn from_uri(uri: &OperatorUri) -> Result<Self> {
38 let mut map = uri.options().clone();
39
40 if let Some(root) = uri.root()
41 && !root.is_empty()
42 {
43 map.insert("root".to_string(), root.to_string());
44 }
45
46 Self::from_iter(map)
47 }
48
49 fn into_builder(self) -> Self::Builder {
50 DashmapBuilder { config: self }
51 }
52}
53
54#[cfg(test)]
55mod tests {
56 use super::*;
57
58 #[test]
59 fn from_uri_sets_root() -> Result<()> {
60 let uri = OperatorUri::new("dashmap:///cache", Vec::<(String, String)>::new())?;
61
62 let cfg = DashmapConfig::from_uri(&uri)?;
63 assert_eq!(cfg.root.as_deref(), Some("cache"));
64 Ok(())
65 }
66}