1use crate::{CacheEntry, CacheEntryState, CacheError};
2use async_trait::async_trait;
3use serde::{Deserialize, Serialize};
4
5#[async_trait]
7pub trait HttpCache<T>: Send + Sync
8where
9 T: Send + Sync + Serialize + for<'de> Deserialize<'de>,
10{
11 async fn get(&self, key: &str) -> Result<Option<CacheEntry<T>>, CacheError>;
13
14 async fn set(
16 &self,
17 key: &str,
18 value: T,
19 status_code: u16,
20 state: CacheEntryState,
21 ) -> Result<(), CacheError>;
22
23 async fn update_state(
25 &self,
26 key: &str,
27 state: CacheEntryState,
28 ) -> Result<(), CacheError>;
29
30 async fn remove(&self, key: &str) -> Result<(), CacheError>;
32
33 async fn cleanup(&self) -> Result<u64, CacheError>;
35
36 async fn contains(&self, key: &str) -> Result<bool, CacheError>;
38}