Skip to main content

egide_storage/
backend.rs

1//! Storage backend trait definition.
2
3use async_trait::async_trait;
4
5use crate::error::StorageError;
6
7/// Storage backend trait for implementing different storage engines.
8#[async_trait]
9pub trait StorageBackend: Send + Sync {
10    /// Get a value by key.
11    async fn get(&self, key: &str) -> Result<Option<Vec<u8>>, StorageError>;
12
13    /// Put a value with a key.
14    async fn put(&self, key: &str, value: &[u8]) -> Result<(), StorageError>;
15
16    /// Delete a value by key.
17    async fn delete(&self, key: &str) -> Result<(), StorageError>;
18
19    /// List keys with a prefix.
20    async fn list(&self, prefix: &str) -> Result<Vec<String>, StorageError>;
21
22    /// Check if a key exists.
23    async fn exists(&self, key: &str) -> Result<bool, StorageError> {
24        Ok(self.get(key).await?.is_some())
25    }
26}