summaryrefslogtreecommitdiffstats
path: root/src/db
diff options
context:
space:
mode:
authorMatthias Beyer <matthias.beyer@atos.net>2021-04-27 09:20:39 +0200
committerMatthias Beyer <mail@beyermatthias.de>2021-05-11 11:20:52 +0200
commitb286e4d5cfeba9e388197b7afd1fc12b20631609 (patch)
tree22d93b9d68c761f4efaaf2b3364c0cd1b43544c0 /src/db
parentda98e8507857c6cc1a94cdc909b7e5fdb993bf0f (diff)
Refactor: Parsing and connection establishing should be member functions
This refactors the parsing of the `DbConnectionConfig` object and the establishing of the connection to be member functions of the type, rather than free functions. Way more idomatic. Signed-off-by: Matthias Beyer <matthias.beyer@atos.net>
Diffstat (limited to 'src/db')
-rw-r--r--src/db/connection.rs86
1 files changed, 39 insertions, 47 deletions
diff --git a/src/db/connection.rs b/src/db/connection.rs
index 4b1e386..3e77cdb 100644
--- a/src/db/connection.rs
+++ b/src/db/connection.rs
@@ -41,52 +41,44 @@ pub struct DbConnectionConfig<'a> {
database_connection_timeout: u16,
}
-pub fn parse_db_connection_config<'a>(config: &'a Configuration, cli: &'a ArgMatches) -> Result<DbConnectionConfig<'a>> {
- Ok(DbConnectionConfig {
- database_host: {
- cli.value_of("database_host")
- .unwrap_or_else(|| config.database_host())
- },
- database_port: {
- cli.value_of("database_port")
- .map(u16::from_str)
- .transpose()?
- .unwrap_or_else(|| *config.database_port())
- },
- database_user: {
- cli.value_of("database_user")
- .unwrap_or_else(|| config.database_user())
- },
- database_password: {
- cli.value_of("database_password")
- .unwrap_or_else(|| config.database_password())
- },
- database_name: {
- cli.value_of("database_name")
- .unwrap_or_else(|| config.database_name())
- },
- database_connection_timeout: {
- cli.value_of("database_connection_timeout")
- .map(u16::from_str)
- .transpose()?
- .unwrap_or_else( || {
- // hardcoded default of 30 seconds database timeout
- config.database_connection_timeout().unwrap_or(30)
- })
- },
- })
-}
+impl<'a> DbConnectionConfig<'a> {
+ pub fn parse(config: &'a Configuration, cli: &'a ArgMatches) -> Result<DbConnectionConfig<'a>> {
+ Ok(DbConnectionConfig {
+ database_host: cli.value_of("database_host").unwrap_or_else(|| config.database_host()),
+ database_port: {
+ cli.value_of("database_port")
+ .map(u16::from_str)
+ .transpose()?
+ .unwrap_or_else(|| *config.database_port())
+ },
+ database_user: cli.value_of("database_user").unwrap_or_else(|| config.database_user()),
+ database_password: cli.value_of("database_password").unwrap_or_else(|| config.database_password()),
+ database_name: cli.value_of("database_name").unwrap_or_else(|| config.database_name()),
+ database_connection_timeout: {
+ cli.value_of("database_connection_timeout")
+ .map(u16::from_str)
+ .transpose()?
+ .unwrap_or_else( || {
+ // hardcoded default of 30 seconds database timeout
+ config.database_connection_timeout().unwrap_or(30)
+ })
+ },
+ })
+ }
+
+ pub fn establish_connection(self) -> Result<PgConnection> {
+ let database_uri: String = format!(
+ "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,
+ timeout = self.database_connection_timeout,
+ );
+ debug!("Trying to connect to database: {}", database_uri);
+ PgConnection::establish(&database_uri).map_err(Error::from)
+ }
-pub fn establish_connection<'a>(conn_config: DbConnectionConfig<'a>) -> Result<PgConnection> {
- let database_uri: String = format!(
- "postgres://{user}:{password}@{host}:{port}/{name}?connect_timeout={timeout}",
- host = conn_config.database_host,
- port = conn_config.database_port,
- user = conn_config.database_user,
- password = conn_config.database_password,
- name = conn_config.database_name,
- timeout = conn_config.database_connection_timeout,
- );
- debug!("Trying to connect to database: {}", database_uri);
- PgConnection::establish(&database_uri).map_err(Error::from)
}
+