storage_client_interface/
lib.rs

1#[cfg(feature = "s3")]
2pub mod s3;
3
4use async_trait::async_trait;
5use thiserror::Error;
6
7#[derive(Error, Debug)]
8pub enum StorageClientError {
9    #[error("GetObject Error: {0}")]
10    GetObject(String),
11    #[error("PutObject Error: {0}")]
12    PutObject(String),
13    #[error("DeleteObject Error: {0}")]
14    DeleteObject(String),
15    #[error("Storage Client Error - {0}")]
16    General(String),
17}
18
19#[async_trait]
20pub trait StorageClientInterface {
21    async fn get_object(&self, key: String) -> Result<Option<String>, StorageClientError>;
22    async fn put_object(&self, key: String, body: String) -> Result<(), StorageClientError>;
23    async fn delete_object(&self, key: String) -> Result<(), StorageClientError>;
24}