use serde::{Deserialize, Serialize};
use std::collections::HashMap;
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct SearchConfig {
pub max_results: usize,
pub max_tokens: usize,
pub engines: Vec<String>,
pub sources: Vec<String>,
pub region: Option<String>,
pub language: Option<String>,
pub time_range: Option<TimeRange>,
pub enable_cache: bool,
pub auto_extract: bool,
pub safe_search: Option<SafeSearchLevel>,
pub offset: usize,
pub enable_query_rewriting: bool,
}
impl Default for SearchConfig {
fn default() -> Self {
Self {
max_results: 10,
max_tokens: 1024,
engines: vec![],
sources: vec!["web".into()],
region: None,
language: None,
time_range: None,
enable_cache: true,
auto_extract: false,
safe_search: Some(SafeSearchLevel::Moderate),
offset: 0,
enable_query_rewriting: false,
}
}
}
#[derive(Debug, Clone, Default)]
pub struct SearchOptions {
pub timeout: Option<std::time::Duration>,
pub metadata: HashMap<String, String>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct TimeRange {
pub start: Option<u64>,
pub end: Option<u64>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub enum SafeSearchLevel {
Off,
Moderate,
Strict,
}