use chrono::{DateTime, Utc};
use serde::{Deserialize, Serialize};
use std::collections::HashMap;
#[derive(Debug, Clone, Serialize, Deserialize, PartialEq)]
pub struct HttpCachePayload {
pub body: String,
pub headers: HashMap<String, String>,
pub metadata: Option<HashMap<String, String>>,
}
#[derive(Debug, Clone, Serialize, Deserialize, PartialEq)]
#[serde(rename_all = "lowercase")]
pub enum CacheEntryState {
Fresh,
Stale,
Invalid,
Error,
}
#[derive(Debug, Clone, Serialize, Deserialize, PartialEq)]
pub struct CacheEntry<T> {
pub key: String,
pub value: T,
pub status_code: u16,
pub state: CacheEntryState,
pub created_at: DateTime<Utc>,
pub last_accessed: DateTime<Utc>,
pub error_count: i32,
pub last_error: Option<String>,
}