#[cfg(feature = "s3")]
pub mod s3;
#[cfg(feature = "azure-blob")]
pub mod azure;
#[cfg(feature = "gcs")]
pub mod gcs;
#[cfg(feature = "http")]
pub mod http;
#[cfg(feature = "s3")]
pub use s3::S3Backend;
#[cfg(feature = "azure-blob")]
pub use azure::AzureBlobBackend;
#[cfg(feature = "gcs")]
pub use gcs::GcsBackend;
#[cfg(feature = "http")]
pub use http::HttpBackend;
use crate::error::Result;
#[cfg(feature = "async")]
#[async_trait::async_trait]
pub trait CloudStorageBackend: Send + Sync {
async fn get(&self, key: &str) -> Result<bytes::Bytes>;
async fn put(&self, key: &str, data: &[u8]) -> Result<()>;
async fn delete(&self, key: &str) -> Result<()>;
async fn exists(&self, key: &str) -> Result<bool>;
async fn list_prefix(&self, prefix: &str) -> Result<Vec<String>>;
fn is_readonly(&self) -> bool {
false
}
}