Skip to main content

hyper_agent_notify/
config.rs

1use serde::{Deserialize, Serialize};
2
3/// Notification settings.
4#[derive(Debug, Clone, Serialize, Deserialize, PartialEq)]
5pub struct NotifierSection {
6    /// Whether notifications are enabled.
7    #[serde(default)]
8    pub enabled: bool,
9
10    /// Discord webhook URL for trade alerts.
11    #[serde(default, skip_serializing_if = "Option::is_none")]
12    pub discord_webhook: Option<String>,
13
14    /// Directory for JSONL log files (defaults to `"logs"`).
15    #[serde(default = "default_log_dir")]
16    pub log_dir: String,
17
18    /// Quiet hours start time in HH:MM format (default `"23:00"`).
19    /// Discord messages are suppressed during quiet hours.
20    #[serde(default = "default_quiet_start")]
21    pub quiet_start: String,
22
23    /// Quiet hours end time in HH:MM format (default `"08:00"`).
24    #[serde(default = "default_quiet_end")]
25    pub quiet_end: String,
26}
27
28fn default_log_dir() -> String {
29    "logs".to_string()
30}
31
32fn default_quiet_start() -> String {
33    "23:00".to_string()
34}
35
36fn default_quiet_end() -> String {
37    "08:00".to_string()
38}
39
40impl Default for NotifierSection {
41    fn default() -> Self {
42        Self {
43            enabled: false,
44            discord_webhook: None,
45            log_dir: default_log_dir(),
46            quiet_start: default_quiet_start(),
47            quiet_end: default_quiet_end(),
48        }
49    }
50}