qorzen_oxide/platform/
storage.rs1use std::sync::Arc;
4
5use crate::error::Result;
6
7#[cfg(not(target_arch = "wasm32"))]
8pub type DynStorage = dyn StorageProvider + Send + Sync;
9
10#[cfg(target_arch = "wasm32")]
11pub type DynStorage = dyn StorageProvider + Sync;
12
13pub type StorageArc = Arc<DynStorage>;
14
15#[cfg_attr(not(target_arch = "wasm32"), async_trait::async_trait)]
17#[cfg_attr(target_arch = "wasm32", async_trait::async_trait(?Send))]
18pub trait StorageProvider: StorageBounds {
19 async fn get(&self, key: &str) -> Result<Option<Vec<u8>>>;
20 async fn set(&self, key: &str, value: &[u8]) -> Result<()>;
21 async fn delete(&self, key: &str) -> Result<()>;
22 async fn list_keys(&self, prefix: &str) -> Result<Vec<String>>;
23 async fn clear(&self) -> Result<()>;
24}
25
26#[cfg(not(target_arch = "wasm32"))]
27pub trait StorageBounds: Send + Sync {}
28
29#[cfg(target_arch = "wasm32")]
30pub trait StorageBounds: Sync {}