From d9fc4899ad633489d8f4e398aa39fc0dadc5b6fa Mon Sep 17 00:00:00 2001 From: Austin Bonander Date: Fri, 21 Feb 2025 15:52:27 -0800 Subject: [PATCH] feat(config): better errors for mislabeled fields --- sqlx-core/src/config/common.rs | 2 +- sqlx-core/src/config/macros.rs | 2 +- sqlx-core/src/config/migrate.rs | 2 +- sqlx-core/src/config/mod.rs | 5 ++++- 4 files changed, 7 insertions(+), 4 deletions(-) diff --git a/sqlx-core/src/config/common.rs b/sqlx-core/src/config/common.rs index d2bf639e..2d5342d5 100644 --- a/sqlx-core/src/config/common.rs +++ b/sqlx-core/src/config/common.rs @@ -3,7 +3,7 @@ #[cfg_attr( feature = "sqlx-toml", derive(serde::Deserialize), - serde(default, rename_all = "kebab-case") + serde(default, rename_all = "kebab-case", deny_unknown_fields) )] pub struct Config { /// Override the database URL environment variable. diff --git a/sqlx-core/src/config/macros.rs b/sqlx-core/src/config/macros.rs index 19e5f42f..9acabf2d 100644 --- a/sqlx-core/src/config/macros.rs +++ b/sqlx-core/src/config/macros.rs @@ -5,7 +5,7 @@ use std::collections::BTreeMap; #[cfg_attr( feature = "sqlx-toml", derive(serde::Deserialize), - serde(default, rename_all = "kebab-case") + serde(default, rename_all = "kebab-case", deny_unknown_fields) )] pub struct Config { /// Specify which crates' types to use when types from multiple crates apply. diff --git a/sqlx-core/src/config/migrate.rs b/sqlx-core/src/config/migrate.rs index 4865e24c..0dd6cc22 100644 --- a/sqlx-core/src/config/migrate.rs +++ b/sqlx-core/src/config/migrate.rs @@ -16,7 +16,7 @@ use std::collections::BTreeSet; #[cfg_attr( feature = "sqlx-toml", derive(serde::Deserialize), - serde(default, rename_all = "kebab-case") + serde(default, rename_all = "kebab-case", deny_unknown_fields) )] pub struct Config { /// Specify the names of schemas to create if they don't already exist. diff --git a/sqlx-core/src/config/mod.rs b/sqlx-core/src/config/mod.rs index 02bde20f..5801af88 100644 --- a/sqlx-core/src/config/mod.rs +++ b/sqlx-core/src/config/mod.rs @@ -48,7 +48,7 @@ mod tests; #[cfg_attr( feature = "sqlx-toml", derive(serde::Deserialize), - serde(default, rename_all = "kebab-case") + serde(default, rename_all = "kebab-case", deny_unknown_fields) )] pub struct Config { /// Configuration shared by multiple components. @@ -210,6 +210,9 @@ impl Config { // Only returned if the file exists but the feature is not enabled. panic!("{e}") } + Err(ConfigError::Parse { error, path }) => { + panic!("error parsing sqlx config {path:?}: {error}") + } Err(e) => { panic!("failed to read sqlx config: {e}") }