use crate::services::storage::storage_error::StorageError;
use async_trait::async_trait;
#[async_trait]
pub trait StorageService: Send + Sync {
async fn upload(&self, file_name: &str, data: &[u8]) -> Result<(), StorageError>;
async fn download(&self, file_name: &str) -> Result<Option<Vec<u8>>, StorageError>;
fn target_dir_path(&self) -> String;
async fn validate(&self) -> bool;
async fn delete(&self, file_name: &str) -> Result<(), StorageError>;
async fn list(&self, prefix: &str) -> Result<Vec<String>, StorageError>;
}