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
9#[derive(Debug, Clone, Deserialize, Serialize)]
10#[serde(deny_unknown_fields)]
11pub struct Config {
12    /// Global scoring configuration (applies to all queries unless overridden)
13    #[serde(default)]
14    pub scoring: Option<ScoringConfig>,
15
16    pub queries: Vec<QueryConfig>,
17
18    /// Auto-refresh interval in seconds (defaults to 300 = 5 minutes)
19    #[serde(default = "default_refresh_interval")]
20    pub auto_refresh_interval: u64,
21}
22
23#[derive(Debug, Clone, Deserialize, Serialize)]
24#[serde(deny_unknown_fields)]
25pub struct QueryConfig {
26    pub name: Option<String>,
27    pub query: String,
28
29    /// Per-query scoring configuration (merges with global scoring — set fields override, unset fields inherit from global)
30    #[serde(default)]
31    pub scoring: Option<ScoringConfig>,
32}