nexus_common/config/
stack.rs1use crate::db::DatabaseConfig;
2use serde::{Deserialize, Deserializer, Serialize};
3use std::{fmt::Debug, path::PathBuf};
4
5use super::{file::expand_home_dir, Level, FILES_DIR, LOG_LEVEL};
6
7fn deserialize_and_expand<'de, D>(deserializer: D) -> Result<PathBuf, D::Error>
9where
10 D: Deserializer<'de>,
11{
12 let path: PathBuf = Deserialize::deserialize(deserializer)?;
13 Ok(expand_home_dir(path))
14}
15
16#[derive(Debug, Clone, Serialize, Deserialize, Eq, PartialEq)]
17pub struct StackConfig {
18 pub log_level: Level,
19 #[serde(deserialize_with = "deserialize_and_expand")]
20 pub files_path: PathBuf,
21 pub otlp_endpoint: Option<String>,
22 pub db: DatabaseConfig,
23}
24
25pub fn default_stack() -> StackConfig {
27 StackConfig::default()
28}
29
30impl Default for StackConfig {
31 fn default() -> Self {
32 Self {
33 log_level: LOG_LEVEL,
34 files_path: expand_home_dir(PathBuf::from(FILES_DIR)),
35 otlp_endpoint: None,
36 db: DatabaseConfig::default(),
37 }
38 }
39}