Skip to content

Commit

Permalink
Rename sqlx(rename) attribute to sqlx(type_name)
Browse files Browse the repository at this point in the history
  • Loading branch information
jplatte committed Dec 29, 2020
1 parent 63bbd34 commit 120214a
Show file tree
Hide file tree
Showing 6 changed files with 26 additions and 21 deletions.
3 changes: 3 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -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]]
Expand Down
4 changes: 2 additions & 2 deletions sqlx-core/src/postgres/types/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -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,
Expand All @@ -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 }
//! ```
//!
Expand Down
4 changes: 2 additions & 2 deletions sqlx-core/src/types/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -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 }
/// ```
Expand All @@ -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,
Expand Down
10 changes: 6 additions & 4 deletions sqlx-macros/src/derives/attributes.rs
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,7 @@ pub enum RenameAll {

pub struct SqlxContainerAttributes {
pub transparent: bool,
pub rename: Option<String>,
pub type_name: Option<String>,
pub rename_all: Option<RenameAll>,
pub repr: Option<Ident>,
}
Expand All @@ -52,7 +52,7 @@ pub struct SqlxChildAttributes {
pub fn parse_container_attributes(input: &[Attribute]) -> syn::Result<SqlxContainerAttributes> {
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")) {
Expand Down Expand Up @@ -91,7 +91,9 @@ pub fn parse_container_attributes(input: &[Attribute]) -> syn::Result<SqlxContai
path,
lit: Lit::Str(val),
..
}) if path.is_ident("rename") => try_set!(rename, val.value(), value),
}) if path.is_ident("type_name") => {
try_set!(type_name, val.value(), value)
}

u => fail!(u, "unexpected attribute"),
},
Expand All @@ -117,7 +119,7 @@ pub fn parse_container_attributes(input: &[Attribute]) -> syn::Result<SqlxContai
Ok(SqlxContainerAttributes {
transparent: transparent.unwrap_or(false),
repr,
rename,
type_name,
rename_all,
})
}
Expand Down
6 changes: 3 additions & 3 deletions sqlx-macros/src/derives/type.rs
Original file line number Diff line number Diff line change
Expand Up @@ -83,7 +83,7 @@ fn expand_derive_has_sql_type_transparent(
let mut tts = proc_macro2::TokenStream::new();

if cfg!(feature = "postgres") {
let ty_name = attr.rename.unwrap_or_else(|| ident.to_string());
let ty_name = attr.type_name.unwrap_or_else(|| ident.to_string());

tts.extend(quote!(
impl sqlx::Type< sqlx::postgres::Postgres > for #ident #ty_generics {
Expand Down Expand Up @@ -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 {
Expand Down Expand Up @@ -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 {
Expand Down
20 changes: 10 additions & 10 deletions tests/postgres/derives.rs
Original file line number Diff line number Diff line change
Expand Up @@ -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,
Expand All @@ -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,
Expand All @@ -42,15 +42,15 @@ enum ColorLower {
}

#[derive(PartialEq, Debug, sqlx::Type)]
#[sqlx(rename = "color_snake")]
#[sqlx(type_name = "color_snake")]
#[sqlx(rename_all = "snake_case")]
enum ColorSnake {
RedGreen,
BlueBlack,
}

#[derive(PartialEq, Debug, sqlx::Type)]
#[sqlx(rename = "color_upper")]
#[sqlx(type_name = "color_upper")]
#[sqlx(rename_all = "UPPERCASE")]
enum ColorUpper {
Red,
Expand All @@ -59,15 +59,15 @@ 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,
BlueBlack,
}

#[derive(PartialEq, Debug, sqlx::Type)]
#[sqlx(rename = "color_kebab_case")]
#[sqlx(type_name = "color_kebab_case")]
#[sqlx(rename_all = "kebab-case")]
enum ColorKebabCase {
RedGreen,
Expand All @@ -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,
Expand All @@ -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<i32>,
Expand All @@ -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<f64>);

// Custom domain type
#[derive(sqlx::Type, Debug)]
#[sqlx(rename = "int4rangeL0pC")]
#[sqlx(type_name = "int4rangeL0pC")]
struct RangeInclusive(PgRange<i32>);

test_type!(transparent<Transparent>(Postgres,
Expand Down

0 comments on commit 120214a

Please sign in to comment.