myc_notifier/models/
queue_config.rs

1use super::tmp_config::TmpConfig;
2
3use myc_config::{load_config_from_file, secret_resolver::SecretResolver};
4use mycelium_base::utils::errors::{creation_err, MappedErrors};
5use serde::Deserialize;
6use std::path::PathBuf;
7
8#[derive(Clone, Debug, Deserialize)]
9#[serde(rename_all = "camelCase")]
10pub struct QueueConfig {
11    pub email_queue_name: SecretResolver<String>,
12    pub consume_interval_in_secs: SecretResolver<u64>,
13}
14
15impl QueueConfig {
16    pub fn from_default_config_file(
17        file: PathBuf,
18    ) -> Result<Self, MappedErrors> {
19        if !file.exists() {
20            return creation_err(format!(
21                "Could not find config file: {}",
22                file.to_str().unwrap()
23            ))
24            .as_error();
25        }
26
27        match load_config_from_file::<TmpConfig>(file) {
28            Ok(config) => Ok(config.queue),
29            Err(err) => Err(err),
30        }
31    }
32}