diff --git a/src/cli/mysql_admutils_compatibility/mysql_dbadm.rs b/src/cli/mysql_admutils_compatibility/mysql_dbadm.rs index 34c6bc4..b556914 100644 --- a/src/cli/mysql_admutils_compatibility/mysql_dbadm.rs +++ b/src/cli/mysql_admutils_compatibility/mysql_dbadm.rs @@ -5,7 +5,7 @@ use crate::{ cli::{database_command, mysql_admutils_compatibility::common::filter_db_or_user_names}, core::{ common::{yn, DbOrUser}, - config::{get_config, mysql_connection_from_config, GlobalConfigArgs}, + config::{create_mysql_connection_from_config, get_config, GlobalConfigArgs}, database_operations::{create_database, drop_database, get_database_list}, database_privilege_operations, }, @@ -126,7 +126,7 @@ pub async fn main() -> anyhow::Result<()> { }; let config = get_config(args.config_overrides)?; - let mut connection = mysql_connection_from_config(config).await?; + let mut connection = create_mysql_connection_from_config(config.mysql).await?; match command { Command::Create(args) => { diff --git a/src/cli/mysql_admutils_compatibility/mysql_useradm.rs b/src/cli/mysql_admutils_compatibility/mysql_useradm.rs index 08614fc..cce2f44 100644 --- a/src/cli/mysql_admutils_compatibility/mysql_useradm.rs +++ b/src/cli/mysql_admutils_compatibility/mysql_useradm.rs @@ -5,7 +5,7 @@ use crate::{ cli::{mysql_admutils_compatibility::common::filter_db_or_user_names, user_command}, core::{ common::{close_database_connection, get_current_unix_user, DbOrUser}, - config::{get_config, mysql_connection_from_config, GlobalConfigArgs}, + config::{create_mysql_connection_from_config, get_config, GlobalConfigArgs}, user_operations::*, }, }; @@ -86,7 +86,7 @@ pub async fn main() -> anyhow::Result<()> { }; let config = get_config(args.config_overrides)?; - let mut connection = mysql_connection_from_config(config).await?; + let mut connection = create_mysql_connection_from_config(config.mysql).await?; match command { Command::Create(args) => { diff --git a/src/core/config.rs b/src/core/config.rs index 54cbaf8..83ada90 100644 --- a/src/core/config.rs +++ b/src/core/config.rs @@ -5,6 +5,9 @@ use clap::Parser; use serde::{Deserialize, Serialize}; use sqlx::{mysql::MySqlConnectOptions, ConnectOptions, MySqlConnection}; +// NOTE: this might look empty now, and the extra wrapping for the mysql +// config seems unnecessary, but it will be useful later when we +// add more configuration options. #[derive(Debug, Clone, Deserialize, Serialize)] pub struct Config { pub mysql: MysqlConfig, @@ -57,6 +60,8 @@ pub struct GlobalConfigArgs { mysql_connect_timeout: Option, } +/// Use the arguments and whichever configuration file which might or might not +/// be found and default values to determine the configuration for the program. pub fn get_config(args: GlobalConfigArgs) -> anyhow::Result { let config_path = PathBuf::from(args.config_file); @@ -94,14 +99,17 @@ pub fn get_config(args: GlobalConfigArgs) -> anyhow::Result { }) } -pub async fn mysql_connection_from_config(config: Config) -> anyhow::Result { +/// Use the provided configuration to establish a connection to a MySQL server. +pub async fn create_mysql_connection_from_config( + config: MysqlConfig, +) -> anyhow::Result { match tokio::time::timeout( - Duration::from_secs(config.mysql.timeout.unwrap_or(DEFAULT_TIMEOUT)), + Duration::from_secs(config.timeout.unwrap_or(DEFAULT_TIMEOUT)), MySqlConnectOptions::new() - .host(&config.mysql.host) - .username(&config.mysql.username) - .password(&config.mysql.password) - .port(config.mysql.port.unwrap_or(DEFAULT_PORT)) + .host(&config.host) + .username(&config.username) + .password(&config.password) + .port(config.port.unwrap_or(DEFAULT_PORT)) .database("mysql") .connect(), ) diff --git a/src/main.rs b/src/main.rs index 8a26ee1..d46d92f 100644 --- a/src/main.rs +++ b/src/main.rs @@ -66,7 +66,7 @@ async fn main() -> anyhow::Result<()> { let args: Args = Args::parse(); let config = core::config::get_config(args.config_overrides)?; - let connection = core::config::mysql_connection_from_config(config).await?; + let connection = core::config::create_mysql_connection_from_config(config.mysql).await?; let result = match args.command { Command::Db(command) => cli::database_command::handle_command(command, connection).await,