1use async_trait::async_trait;
4
5use crate::error::StorageError;
6
7#[async_trait]
9pub trait StorageBackend: Send + Sync {
10 async fn get(&self, key: &str) -> Result<Option<Vec<u8>>, StorageError>;
12
13 async fn put(&self, key: &str, value: &[u8]) -> Result<(), StorageError>;
15
16 async fn delete(&self, key: &str) -> Result<(), StorageError>;
18
19 async fn list(&self, prefix: &str) -> Result<Vec<String>, StorageError>;
21
22 async fn exists(&self, key: &str) -> Result<bool, StorageError> {
24 Ok(self.get(key).await?.is_some())
25 }
26}