data_modelling_sdk/storage/
mod.rs1use async_trait::async_trait;
9
10#[derive(Debug, thiserror::Error)]
12pub enum StorageError {
13 #[error("File not found: {0}")]
14 FileNotFound(String),
15 #[error("Directory not found: {0}")]
16 DirectoryNotFound(String),
17 #[error("IO error: {0}")]
18 IoError(String),
19 #[error("Serialization error: {0}")]
20 SerializationError(String),
21 #[error("Network error: {0}")]
22 NetworkError(String),
23 #[error("Permission denied: {0}")]
24 PermissionDenied(String),
25 #[error("Storage backend error: {0}")]
26 BackendError(String),
27}
28
29#[async_trait(?Send)]
34pub trait StorageBackend: Send + Sync {
35 async fn read_file(&self, path: &str) -> Result<Vec<u8>, StorageError>;
37
38 async fn write_file(&self, path: &str, content: &[u8]) -> Result<(), StorageError>;
40
41 async fn list_files(&self, dir: &str) -> Result<Vec<String>, StorageError>;
43
44 async fn file_exists(&self, path: &str) -> Result<bool, StorageError>;
46
47 async fn delete_file(&self, path: &str) -> Result<(), StorageError>;
49
50 async fn create_dir(&self, path: &str) -> Result<(), StorageError>;
52
53 async fn dir_exists(&self, path: &str) -> Result<bool, StorageError>;
55}
56
57#[cfg(feature = "native-fs")]
59pub mod filesystem;
60
61#[cfg(feature = "api-backend")]
62pub mod api;
63
64#[cfg(all(target_arch = "wasm32", feature = "wasm"))]
65pub mod browser;