1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
use std::{fmt::Debug, time::Duration};
use crate::{async_trait, Data, Result};
/// A Storage Trait
#[async_trait]
pub trait Storage: Debug + Send + Sync + 'static {
/// Get a data from storage by the key
async fn get(&self, key: &str) -> Result<Option<Data>>;
/// Set a session to storage
async fn set(&self, key: &str, val: Data, exp: Duration) -> Result<()>;
/// Remove a data from storage by the key
async fn remove(&self, key: &str) -> Result<()>;
/// Reset the storage and remove all keys
async fn reset(&self) -> Result<()> {
Ok(())
}
/// Close the connection
async fn close(&self) -> Result<()> {
Ok(())
}
}