summaryrefslogtreecommitdiffstats
path: root/src/db
diff options
context:
space:
mode:
authorMatthias Beyer <matthias.beyer@atos.net>2021-04-23 12:51:57 +0200
committerMatthias Beyer <mail@beyermatthias.de>2021-04-26 14:46:22 +0200
commit1ebfa387fa5d47e3200b990f63f55bbe36adeff1 (patch)
tree52496b7406e2b90150358e0ad247e769e3f3b702 /src/db
parent155b9001a2db30588acf148f9c755f4b187e8e3a (diff)
Add support for database connection timeout
This patch adds support for a database connection timeout, giving the user the option to configure one, but hardcoding a default timeout to 30 seconds. Signed-off-by: Matthias Beyer <matthias.beyer@atos.net>
Diffstat (limited to 'src/db')
-rw-r--r--src/db/connection.rs14
1 files changed, 12 insertions, 2 deletions
diff --git a/src/db/connection.rs b/src/db/connection.rs
index 33de9e7..fb18e32 100644
--- a/src/db/connection.rs
+++ b/src/db/connection.rs
@@ -34,17 +34,21 @@ pub struct DbConnectionConfig {
#[getset(get = "pub")]
database_name: String,
+
+ #[getset(get = "pub")]
+ database_connection_timeout: String,
}
impl Into<String> for DbConnectionConfig {
fn into(self) -> String {
format!(
- "postgres://{user}:{password}@{host}:{port}/{name}",
+ "postgres://{user}:{password}@{host}:{port}/{name}?connect_timeout={timeout}",
host = self.database_host,
port = self.database_port,
user = self.database_user,
password = self.database_password,
- name = self.database_name
+ name = self.database_name,
+ timeout = self.database_connection_timeout,
)
}
}
@@ -66,6 +70,11 @@ pub fn parse_db_connection_config(config: &Configuration, cli: &ArgMatches) -> D
config.database_password().to_string()
});
let database_name = find_value(cli, "database_name", || config.database_name().to_string());
+ let database_connection_timeout = find_value(cli, "database_connection_timeout",
+ || {
+ // hardcoded default of 30 seconds database timeout
+ config.database_connection_timeout().unwrap_or(30).to_string()
+ });
DbConnectionConfig {
database_host,
@@ -73,6 +82,7 @@ pub fn parse_db_connection_config(config: &Configuration, cli: &ArgMatches) -> D
database_user,
database_password,
database_name,
+ database_connection_timeout,
}
}