diff --git a/src/app_config.rs b/src/app_config.rs index 5be0179c..9841c0c2 100644 --- a/src/app_config.rs +++ b/src/app_config.rs @@ -45,6 +45,10 @@ impl AppConfig { if let Some(config_dir) = &cli.config_dir { config.configuration_directory.clone_from(config_dir); } + + config.configuration_directory = cli.config_dir.clone().unwrap_or(PathBuf::from("./sqlpage")); + config.database_url = default_database_url(&config.configuration_directory); + config.validate()?; Ok(config) } @@ -104,7 +108,7 @@ pub fn load_from_env() -> anyhow::Result { #[derive(Debug, Deserialize, PartialEq, Clone)] pub struct AppConfig { - #[serde(default = "default_database_url")] + #[serde(default)] pub database_url: String, pub max_database_pool_connections: Option, pub database_connection_idle_timeout_seconds: Option, @@ -332,7 +336,7 @@ fn parse_socket_addr(host_str: &str) -> anyhow::Result { .with_context(|| format!("host '{host_str}' does not resolve to an IP")) } -fn default_database_url() -> String { +fn default_database_url(configuration_directory: &PathBuf) -> String { let prefix = "sqlite://".to_owned(); if cfg!(test) { @@ -341,7 +345,7 @@ fn default_database_url() -> String { #[cfg(not(feature = "lambda-web"))] { - let config_dir = cannonicalize_if_possible(&configuration_directory()); + let config_dir = cannonicalize_if_possible(configuration_directory.as_path()); let old_default_db_path = PathBuf::from(DEFAULT_DATABASE_FILE); let default_db_path = config_dir.join(DEFAULT_DATABASE_FILE); if let Ok(true) = old_default_db_path.try_exists() {