Skip to main content

capp_cache/
http_cache.rs

1use crate::{CacheEntry, CacheEntryState, CacheError};
2use async_trait::async_trait;
3use serde::{Deserialize, Serialize};
4
5/// Core HTTP cache trait that backends must implement
6#[async_trait]
7pub trait HttpCache<T>: Send + Sync
8where
9    T: Send + Sync + Serialize + for<'de> Deserialize<'de>,
10{
11    /// Get a value from cache
12    async fn get(&self, key: &str) -> Result<Option<CacheEntry<T>>, CacheError>;
13
14    /// Set or update a value in cache
15    async fn set(
16        &self,
17        key: &str,
18        value: T,
19        status_code: u16,
20        state: CacheEntryState,
21    ) -> Result<(), CacheError>;
22
23    /// Update entry state
24    async fn update_state(
25        &self,
26        key: &str,
27        state: CacheEntryState,
28    ) -> Result<(), CacheError>;
29
30    /// Remove entry from cache
31    async fn remove(&self, key: &str) -> Result<(), CacheError>;
32
33    /// Remove stale/invalid/error entries
34    async fn cleanup(&self) -> Result<u64, CacheError>;
35
36    /// Check if a URL is cached
37    async fn contains(&self, key: &str) -> Result<bool, CacheError>;
38}