use crate::{CacheEntry, CacheEntryState, CacheError};
use async_trait::async_trait;
use serde::{Deserialize, Serialize};
#[async_trait]
pub trait HttpCache<T>: Send + Sync
where
T: Send + Sync + Serialize + for<'de> Deserialize<'de>,
{
async fn get(&self, key: &str) -> Result<Option<CacheEntry<T>>, CacheError>;
async fn set(
&self,
key: &str,
value: T,
status_code: u16,
state: CacheEntryState,
) -> Result<(), CacheError>;
async fn update_state(
&self,
key: &str,
state: CacheEntryState,
) -> Result<(), CacheError>;
async fn remove(&self, key: &str) -> Result<(), CacheError>;
async fn cleanup(&self) -> Result<u64, CacheError>;
async fn contains(&self, key: &str) -> Result<bool, CacheError>;
}