diff --git a/CHANGELOG.md b/CHANGELOG.md index b5e1263bc6..52b3fd5d15 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -17,6 +17,9 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 .fetch_all(&mut conn).await?; ``` +- [[#940]] Rename the `#[sqlx(rename)]` attribute used to specify the type name on the database + side to `#[sqlx(type_name)]` [[@jplatte]]. + ## 0.4.2 - 2020-12-19 - [[#908]] Fix `whoami` crash on FreeBSD platform [[@fundon]] [[@AldaronLau]] diff --git a/sqlx-core/src/postgres/types/mod.rs b/sqlx-core/src/postgres/types/mod.rs index dff2ba2d3c..9ed490963f 100644 --- a/sqlx-core/src/postgres/types/mod.rs +++ b/sqlx-core/src/postgres/types/mod.rs @@ -117,7 +117,7 @@ //! //! ```rust,ignore //! #[derive(sqlx::Type)] -//! #[sqlx(rename = "inventory_item")] +//! #[sqlx(type_name = "inventory_item")] //! struct InventoryItem { //! name: String, //! supplier_id: i32, @@ -142,7 +142,7 @@ //! //! ```rust,ignore //! #[derive(sqlx::Type)] -//! #[sqlx(rename = "mood", rename_all = "lowercase")] +//! #[sqlx(type_name = "mood", rename_all = "lowercase")] //! enum Mood { Sad, Ok, Happy } //! ``` //! diff --git a/sqlx-core/src/types/mod.rs b/sqlx-core/src/types/mod.rs index cf1e356353..bcce93daeb 100644 --- a/sqlx-core/src/types/mod.rs +++ b/sqlx-core/src/types/mod.rs @@ -131,7 +131,7 @@ pub use json::Json; /// /// ```rust,ignore /// #[derive(sqlx::Type)] -/// #[sqlx(rename = "color")] // only for PostgreSQL to match a type definition +/// #[sqlx(type_name = "color")] // only for PostgreSQL to match a type definition /// #[sqlx(rename_all = "lowercase")] /// enum Color { Red, Green, Blue } /// ``` @@ -144,7 +144,7 @@ pub use json::Json; /// /// ```rust,ignore /// #[derive(sqlx::Type)] -/// #[sqlx(rename = "interface_type")] +/// #[sqlx(type_name = "interface_type")] /// struct InterfaceType { /// name: String, /// supplier_id: i32, diff --git a/sqlx-macros/src/derives/attributes.rs b/sqlx-macros/src/derives/attributes.rs index 373feaae98..0b9e4f84a8 100644 --- a/sqlx-macros/src/derives/attributes.rs +++ b/sqlx-macros/src/derives/attributes.rs @@ -39,7 +39,7 @@ pub enum RenameAll { pub struct SqlxContainerAttributes { pub transparent: bool, - pub rename: Option, + pub type_name: Option, pub rename_all: Option, pub repr: Option, } @@ -52,7 +52,7 @@ pub struct SqlxChildAttributes { pub fn parse_container_attributes(input: &[Attribute]) -> syn::Result { let mut transparent = None; let mut repr = None; - let mut rename = None; + let mut type_name = None; let mut rename_all = None; for attr in input.iter().filter(|a| a.path.is_ident("sqlx") || a.path.is_ident("repr")) { @@ -91,7 +91,9 @@ pub fn parse_container_attributes(input: &[Attribute]) -> syn::Result try_set!(rename, val.value(), value), + }) if path.is_ident("type_name") => { + try_set!(type_name, val.value(), value) + } u => fail!(u, "unexpected attribute"), }, @@ -117,7 +119,7 @@ pub fn parse_container_attributes(input: &[Attribute]) -> syn::Result for #ident #ty_generics { @@ -142,7 +142,7 @@ fn expand_derive_has_sql_type_strong_enum( } if cfg!(feature = "postgres") { - let ty_name = attributes.rename.unwrap_or_else(|| ident.to_string()); + let ty_name = attributes.type_name.unwrap_or_else(|| ident.to_string()); tts.extend(quote!( impl sqlx::Type< sqlx::Postgres > for #ident { @@ -180,7 +180,7 @@ fn expand_derive_has_sql_type_struct( let mut tts = proc_macro2::TokenStream::new(); if cfg!(feature = "postgres") { - let ty_name = attributes.rename.unwrap_or_else(|| ident.to_string()); + let ty_name = attributes.type_name.unwrap_or_else(|| ident.to_string()); tts.extend(quote!( impl sqlx::Type< sqlx::Postgres > for #ident { diff --git a/tests/postgres/derives.rs b/tests/postgres/derives.rs index c85ced0e62..f67ef6fb4b 100644 --- a/tests/postgres/derives.rs +++ b/tests/postgres/derives.rs @@ -21,7 +21,7 @@ enum Weak { // "Strong" enums can map to TEXT (25) #[derive(PartialEq, Debug, sqlx::Type)] -#[sqlx(rename = "text")] +#[sqlx(type_name = "text")] #[sqlx(rename_all = "lowercase")] enum Strong { One, @@ -33,7 +33,7 @@ enum Strong { // rename_all variants #[derive(PartialEq, Debug, sqlx::Type)] -#[sqlx(rename = "color_lower")] +#[sqlx(type_name = "color_lower")] #[sqlx(rename_all = "lowercase")] enum ColorLower { Red, @@ -42,7 +42,7 @@ enum ColorLower { } #[derive(PartialEq, Debug, sqlx::Type)] -#[sqlx(rename = "color_snake")] +#[sqlx(type_name = "color_snake")] #[sqlx(rename_all = "snake_case")] enum ColorSnake { RedGreen, @@ -50,7 +50,7 @@ enum ColorSnake { } #[derive(PartialEq, Debug, sqlx::Type)] -#[sqlx(rename = "color_upper")] +#[sqlx(type_name = "color_upper")] #[sqlx(rename_all = "UPPERCASE")] enum ColorUpper { Red, @@ -59,7 +59,7 @@ enum ColorUpper { } #[derive(PartialEq, Debug, sqlx::Type)] -#[sqlx(rename = "color_screaming_snake")] +#[sqlx(type_name = "color_screaming_snake")] #[sqlx(rename_all = "SCREAMING_SNAKE_CASE")] enum ColorScreamingSnake { RedGreen, @@ -67,7 +67,7 @@ enum ColorScreamingSnake { } #[derive(PartialEq, Debug, sqlx::Type)] -#[sqlx(rename = "color_kebab_case")] +#[sqlx(type_name = "color_kebab_case")] #[sqlx(rename_all = "kebab-case")] enum ColorKebabCase { RedGreen, @@ -92,7 +92,7 @@ enum ColorPascalCase { // "Strong" enum can map to a custom type #[derive(PartialEq, Debug, sqlx::Type)] -#[sqlx(rename = "mood")] +#[sqlx(type_name = "mood")] #[sqlx(rename_all = "lowercase")] enum Mood { Ok, @@ -103,7 +103,7 @@ enum Mood { // Records must map to a custom type // Note that all types are types in Postgres #[derive(PartialEq, Debug, sqlx::Type)] -#[sqlx(rename = "inventory_item")] +#[sqlx(type_name = "inventory_item")] struct InventoryItem { name: String, supplier_id: Option, @@ -112,12 +112,12 @@ struct InventoryItem { // Custom range type #[derive(sqlx::Type, Debug, PartialEq)] -#[sqlx(rename = "float_range")] +#[sqlx(type_name = "float_range")] struct FloatRange(PgRange); // Custom domain type #[derive(sqlx::Type, Debug)] -#[sqlx(rename = "int4rangeL0pC")] +#[sqlx(type_name = "int4rangeL0pC")] struct RangeInclusive(PgRange); test_type!(transparent(Postgres,