Skip to main content

ecat_data/
storage.rs

1// Copyright (c) 2026 erik <erik@erik.xyz> — https://erik.xyz
2use async_trait::async_trait;
3use ecat_errors::Error;
4
5/// Object-storage client abstraction (e.g. S3, MinIO).
6#[async_trait]
7pub trait StorageClient: Send + Sync {
8    /// Upload `data` under `key` in `bucket`.
9    async fn put(&self, bucket: &str, key: &str, data: &[u8]) -> Result<(), Error>;
10
11    /// Download the object at `key` in `bucket`.
12    async fn get(&self, bucket: &str, key: &str) -> Result<Vec<u8>, Error>;
13
14    /// Delete the object at `key` in `bucket`.
15    async fn delete(&self, bucket: &str, key: &str) -> Result<(), Error>;
16
17    /// List object keys in `bucket` under `prefix`.
18    async fn list(&self, bucket: &str, prefix: &str) -> Result<Vec<String>, Error>;
19}