rskit_storage/store/
traits.rs1use std::time::Duration;
2
3use rskit_errors::AppResult;
4
5use crate::FileSource;
6
7use super::{StoredFile, UploadOptions};
8
9#[async_trait::async_trait]
11pub trait FileStore: Send + Sync {
12 async fn upload(
17 &self,
18 source: &FileSource,
19 key: &str,
20 options: UploadOptions,
21 ) -> AppResult<StoredFile>;
22
23 async fn download(&self, key: &str) -> AppResult<FileSource>;
25
26 async fn delete(&self, key: &str) -> AppResult<()>;
28
29 async fn exists(&self, key: &str) -> AppResult<bool>;
31
32 async fn head(&self, key: &str) -> AppResult<StoredFile>;
34
35 async fn list(&self, prefix: &str, limit: Option<usize>) -> AppResult<Vec<StoredFile>>;
37
38 async fn presigned_url(&self, key: &str, expires_in: Duration) -> AppResult<String>;
40
41 async fn copy(&self, from_key: &str, to_key: &str) -> AppResult<StoredFile>;
43
44 async fn rename(&self, from_key: &str, to_key: &str) -> AppResult<StoredFile>;
46}