Add password field to config (#74)

* create FUNDING.yml

* add password field

* add a example using password field to README
pull/75/head
Takayuki Maeda 3 years ago committed by GitHub
parent 2c49d2b786
commit 0fb5d77dc6
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

@ -105,6 +105,7 @@ type = "mysql"
user = "root" user = "root"
host = "localhost" host = "localhost"
port = 3306 port = 3306
password = "password"
database = "foo" database = "foo"
[[conn]] [[conn]]

@ -51,6 +51,7 @@ impl Default for Config {
host: Some("localhost".to_string()), host: Some("localhost".to_string()),
port: Some(3306), port: Some(3306),
path: None, path: None,
password: None,
database: None, database: None,
}], }],
key_config: KeyConfig::default(), key_config: KeyConfig::default(),
@ -66,6 +67,7 @@ pub struct Connection {
host: Option<String>, host: Option<String>,
port: Option<u64>, port: Option<u64>,
path: Option<std::path::PathBuf>, path: Option<std::path::PathBuf>,
password: Option<String>,
pub database: Option<String>, pub database: Option<String>,
} }
@ -172,18 +174,24 @@ impl Connection {
.port .port
.as_ref() .as_ref()
.ok_or_else(|| anyhow::anyhow!("type mysql needs the port field"))?; .ok_or_else(|| anyhow::anyhow!("type mysql needs the port field"))?;
let password = self
.password
.as_ref()
.map_or(String::new(), |p| p.to_string());
match self.database.as_ref() { match self.database.as_ref() {
Some(database) => Ok(format!( Some(database) => Ok(format!(
"mysql://{user}:@{host}:{port}/{database}", "mysql://{user}:{password}@{host}:{port}/{database}",
user = user, user = user,
password = password,
host = host, host = host,
port = port, port = port,
database = database database = database
)), )),
None => Ok(format!( None => Ok(format!(
"mysql://{user}:@{host}:{port}", "mysql://{user}:{password}@{host}:{port}",
user = user, user = user,
password = password,
host = host, host = host,
port = port, port = port,
)), )),
@ -202,18 +210,24 @@ impl Connection {
.port .port
.as_ref() .as_ref()
.ok_or_else(|| anyhow::anyhow!("type postgres needs the port field"))?; .ok_or_else(|| anyhow::anyhow!("type postgres needs the port field"))?;
let password = self
.password
.as_ref()
.map_or(String::new(), |p| p.to_string());
match self.database.as_ref() { match self.database.as_ref() {
Some(database) => Ok(format!( Some(database) => Ok(format!(
"postgres://{user}@{host}:{port}/{database}", "postgres://{user}:{password}@{host}:{port}/{database}",
user = user, user = user,
password = password,
host = host, host = host,
port = port, port = port,
database = database database = database
)), )),
None => Ok(format!( None => Ok(format!(
"postgres://{user}@{host}:{port}", "postgres://{user}:{password}@{host}:{port}",
user = user, user = user,
password = password,
host = host, host = host,
port = port, port = port,
)), )),

Loading…
Cancel
Save