#[derive(Debug, Clone)]
pub struct AppConfig {
pub port: u16,
pub engine_timeout_ms: u64,
pub results_per_engine: usize,
pub max_results: usize,
}
impl AppConfig {
pub fn from_env() -> Self {
Self {
port: env_parse("PORT", 3000),
engine_timeout_ms: env_parse("ENGINE_TIMEOUT_MS", 8_000),
results_per_engine: env_parse("RESULTS_PER_ENGINE", 10),
max_results: env_parse("MAX_RESULTS", 10),
}
}
}
fn env_parse<T: std::str::FromStr>(key: &str, default: T) -> T {
std::env::var(key)
.ok()
.and_then(|v| v.parse().ok())
.unwrap_or(default)
}