use anyhow::Result;
use crate::main_modules::AppState;
use crate::{conversation_store, rate_limiter, response_store};
#[derive(Clone)]
pub(crate) struct Carried {
pub response_store: std::sync::Arc<response_store::ResponseStore>,
pub rate_limiter: std::sync::Arc<rate_limiter::RateLimiter>,
pub conversation_store: std::sync::Arc<conversation_store::ConversationStore>,
}
impl Carried {
pub fn from_env() -> Result<Self, String> {
Ok(Self {
response_store: response_store::ResponseStore::from_env()?,
rate_limiter: rate_limiter::RateLimiter::from_env()?,
conversation_store: conversation_store::ConversationStore::from_env()?,
})
}
pub fn from_previous(previous: &AppState) -> Self {
Self {
response_store: previous.response_store.clone(),
rate_limiter: previous.rate_limiter.clone(),
conversation_store: previous.conversation_store.clone(),
}
}
}