diff options
author | Matthias Beyer <matthias.beyer@atos.net> | 2021-04-27 09:20:39 +0200 |
---|---|---|
committer | Matthias Beyer <mail@beyermatthias.de> | 2021-05-11 11:20:52 +0200 |
commit | b286e4d5cfeba9e388197b7afd1fc12b20631609 (patch) | |
tree | 22d93b9d68c761f4efaaf2b3364c0cd1b43544c0 /src/db | |
parent | da98e8507857c6cc1a94cdc909b7e5fdb993bf0f (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.rs | 86 |
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) } + |