1use serde::{Deserialize, Serialize};
2
3use crate::scoring::ScoringConfig;
4
5fn default_refresh_interval() -> u64 {
6 300
7}
8
9fn default_theme() -> String {
10 "auto".to_string()
11}
12
13#[derive(Debug, Clone, Deserialize, Serialize)]
14#[serde(deny_unknown_fields)]
15pub struct Config {
16 #[serde(default)]
18 pub scoring: Option<ScoringConfig>,
19
20 pub queries: Vec<QueryConfig>,
21
22 #[serde(default = "default_refresh_interval")]
24 pub auto_refresh_interval: u64,
25
26 #[serde(default = "default_theme")]
28 pub theme: String,
29}
30
31#[derive(Debug, Clone, Deserialize, Serialize)]
32#[serde(deny_unknown_fields)]
33pub struct QueryConfig {
34 pub name: Option<String>,
35 pub query: String,
36
37 #[serde(default)]
39 pub scoring: Option<ScoringConfig>,
40}