Skip to main content

zerolaunch_plugin_api/services/storage/
storage_service.rs

1use crate::services::storage::storage_error::StorageError;
2use async_trait::async_trait;
3
4/// 文件存储服务 trait — 平台原语。
5/// 负责将资源文件存储到本地存储目录。
6/// 与 ShellExecutor 等其他 SDK trait 平级,由 HostApi 持有。
7#[async_trait]
8pub trait StorageService: Send + Sync {
9    /// 将数据上传到存储后端。
10    /// 参数:file_name - 相对文件名;data - 文件内容。
11    /// 返回:成功返回 Ok(()),失败返回 StorageError。
12    async fn upload(&self, file_name: &str, data: &[u8]) -> Result<(), StorageError>;
13
14    /// 从存储后端下载数据。文件不存在时返回 Ok(None)。
15    /// 参数:file_name - 相对文件名。
16    /// 返回:文件内容(文件不存在时为 None),失败返回 StorageError。
17    async fn download(&self, file_name: &str) -> Result<Option<Vec<u8>>, StorageError>;
18
19    /// 获取存储后端的目标目录路径。
20    fn target_dir_path(&self) -> String;
21
22    /// 验证存储配置是否有效(上传+下载测试文件)。
23    async fn validate(&self) -> bool;
24
25    /// 从存储后端删除文件。
26    async fn delete(&self, file_name: &str) -> Result<(), StorageError>;
27
28    /// 列出指定前缀下的所有文件名。
29    async fn list(&self, prefix: &str) -> Result<Vec<String>, StorageError>;
30}