diff --git a/.github/dependabot.yml b/.github/dependabot.yml index 83263b13..f1736fdc 100644 --- a/.github/dependabot.yml +++ b/.github/dependabot.yml @@ -5,7 +5,7 @@ updates: schedule: interval: "daily" commit-message: - prefix: "chore(cargo): update" + prefix: "chore(cargo)" labels: [] - package-ecosystem: "github-actions" @@ -15,5 +15,5 @@ updates: schedule: interval: "daily" commit-message: - prefix: "chore(ci): update" + prefix: "chore(ci)" labels: [] diff --git a/Cargo.lock b/Cargo.lock index 9089f8c4..cb6cf1ba 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2450,9 +2450,9 @@ checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" [[package]] name = "secrecy" -version = "0.8.0" +version = "0.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9bd1c54ea06cfd2f6b63219704de0b9b4f72dcc2b8fdef820be6cd799780e91e" +checksum = "d97d6b0620457bfe19b3b0fbfdd4c2c172a14c108096b8ff8bca6a71001f5d91" dependencies = [ "serde", "zeroize", diff --git a/api/Cargo.toml b/api/Cargo.toml index 17e6fd80..e992b074 100644 --- a/api/Cargo.toml +++ b/api/Cargo.toml @@ -40,7 +40,7 @@ tracing-subscriber = { version = "0.3", features = ["registry", "env-filter"] } tracing-bunyan-formatter = "0.3" tracing-log = "0.2" tracing-actix-web = "0.7" -secrecy = { version = "0.8", features = ["serde"] } +secrecy = { version = "0.10.1", features = ["serde"] } anyhow = "1" serde = { version = "1.0", features = ["derive"] } serde_json = "1" diff --git a/api/src/configuration.rs b/api/src/configuration.rs index e8f801b1..c2036e68 100644 --- a/api/src/configuration.rs +++ b/api/src/configuration.rs @@ -1,4 +1,5 @@ -use secrecy::{ExposeSecret, Secret}; +use secrecy::{ExposeSecret, SecretString}; +use serde::Deserialize; use serde_aux::field_attributes::deserialize_number_from_string; use sqlx::mysql::{MySqlConnectOptions, MySqlSslMode}; @@ -17,10 +18,21 @@ pub struct ApplicationSettings { pub base_url: String, } +fn deserialize_secret_string<'de, D>( + deserializer: D, +) -> Result +where + D: serde::Deserializer<'de>, +{ + let s = String::deserialize(deserializer)?; + Ok(SecretString::from(s)) +} + #[derive(Clone, serde::Deserialize)] pub struct DatabaseSettings { pub username: String, - pub password: Secret, + #[serde(deserialize_with = "deserialize_secret_string")] + pub password: SecretString, #[serde(deserialize_with = "deserialize_number_from_string")] pub port: u16, pub host: String, diff --git a/api/src/main.rs b/api/src/main.rs index fad4ecc9..4597c10b 100644 --- a/api/src/main.rs +++ b/api/src/main.rs @@ -10,7 +10,7 @@ async fn main() -> anyhow::Result<()> { let configuration = get_configuration().expect("Failed to read configuration."); - let application = Application::build(configuration.clone()).await?; + let application = Application::build(configuration).await?; application.run_until_stopped().await?; Ok(())