Skip to main content

Mountain/IPC/WindServiceAdapters/
WindStorageService.rs

1
2//! Wind-shaped storage service: get / set against the
3//! injected `StorageProvider` trait.
4
5use std::sync::Arc;
6
7use CommonLibrary::{Error::CommonError::CommonError, Storage::StorageProvider::StorageProvider};
8
9pub struct Struct {
10	pub(super) provider:Arc<dyn StorageProvider>,
11}
12
13impl Struct {
14	pub fn new(provider:Arc<dyn StorageProvider>) -> Self { Self { provider } }
15
16	pub async fn get(&self, key:String) -> Result<serde_json::Value, String> {
17		let value = self
18			.provider
19			.GetStorageValue(false, &key)
20			.await
21			.map_err(|e:CommonError| e.to_string())?
22			.ok_or_else(|| "Storage key not found".to_string())?;
23
24		Ok(value)
25	}
26
27	pub async fn set(&self, key:String, value:serde_json::Value) -> Result<(), String> {
28		self.provider
29			.UpdateStorageValue(false, key.to_string(), Some(value))
30			.await
31			.map_err(|e:CommonError| e.to_string())
32	}
33}