From 7161f612a1b8a1b7ee06ec0f82a53d7ed65b522a Mon Sep 17 00:00:00 2001 From: "Helmut K. C. Tessarek" Date: Mon, 25 Aug 2025 18:11:36 -0400 Subject: [PATCH] refactor(config): update template, add validation (#6229) This change is a follow up to #6166 - add new options to `.env.template` - add validation for new config option values --- .env.template | 10 +++++++++- src/config.rs | 8 ++++++++ 2 files changed, 17 insertions(+), 1 deletion(-) diff --git a/.env.template b/.env.template index 1e9a189e..140a4ccc 100644 --- a/.env.template +++ b/.env.template @@ -80,8 +80,16 @@ ## Timeout when acquiring database connection # DATABASE_TIMEOUT=30 +## Database idle timeout +## Timeout in seconds before idle connections to the database are closed. +# DATABASE_IDLE_TIMEOUT=600 + +## Database min connections +## Define the minimum size of the connection pool used for connecting to the database. +# DATABASE_MIN_CONNS=2 + ## Database max connections -## Define the size of the connection pool used for connecting to the database. +## Define the maximum size of the connection pool used for connecting to the database. # DATABASE_MAX_CONNS=10 ## Database connection initialization diff --git a/src/config.rs b/src/config.rs index 86174fa6..840bf474 100644 --- a/src/config.rs +++ b/src/config.rs @@ -834,6 +834,14 @@ fn validate_config(cfg: &ConfigItems) -> Result<(), Error> { err!(format!("`DATABASE_MAX_CONNS` contains an invalid value. Ensure it is between 1 and {limit}.",)); } + if cfg.database_min_conns < 1 || cfg.database_min_conns > limit { + err!(format!("`DATABASE_MIN_CONNS` contains an invalid value. Ensure it is between 1 and {limit}.",)); + } + + if cfg.database_min_conns > cfg.database_max_conns { + err!(format!("`DATABASE_MIN_CONNS` must be smaller than or equal to `DATABASE_MAX_CONNS`.",)); + } + if let Some(log_file) = &cfg.log_file { if std::fs::OpenOptions::new().append(true).create(true).open(log_file).is_err() { err!("Unable to write to log file", log_file);