qorzen_oxide/platform/
storage.rs

1// src/platform/storage.rs
2
3use 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/// Storage operations (key-value)
16#[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 {}