Skip to main content

pr_bro/config/
schema.rs

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    /// Global scoring configuration (applies to all queries unless overridden)
17    #[serde(default)]
18    pub scoring: Option<ScoringConfig>,
19
20    pub queries: Vec<QueryConfig>,
21
22    /// Auto-refresh interval in seconds (defaults to 300 = 5 minutes)
23    #[serde(default = "default_refresh_interval")]
24    pub auto_refresh_interval: u64,
25
26    /// Theme selection: "dark", "light", or "auto" (detects terminal background)
27    #[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    /// Per-query scoring configuration (merges with global scoring — set fields override, unset fields inherit from global)
38    #[serde(default)]
39    pub scoring: Option<ScoringConfig>,
40}