pub mod claude; pub mod gemini; pub mod langchain; pub mod ollama; pub mod openai; use anyhow::bail; use anyhow::Result; use crate::domain::models::BackendBox; use crate::domain::models::BackendName; pub struct BackendManager {} impl BackendManager { pub fn get(name: BackendName) -> Result<BackendBox> { if name == BackendName::LangChain { return Ok(Box::<langchain::LangChain>::default()); } if name == BackendName::Ollama { return Ok(Box::<ollama::Ollama>::default()); } if name == BackendName::OpenAI { return Ok(Box::<openai::OpenAI>::default()); } if name == BackendName::Claude { return Ok(Box::<claude::Claude>::default()); } if name == BackendName::Gemini { return Ok(Box::<gemini::Gemini>::default()); } bail!(format!("No backend implemented for {name}")) } }