Rename_all attribute documentation
This commit is contained in:
parent
d509b3bc52
commit
f4b181a201
@ -58,15 +58,15 @@ fn rename_all_overrides() {
|
|||||||
#[derive(Debug, ToSql, FromSql, PartialEq)]
|
#[derive(Debug, ToSql, FromSql, PartialEq)]
|
||||||
#[postgres(name = "mood", rename_all = "snake_case")]
|
#[postgres(name = "mood", rename_all = "snake_case")]
|
||||||
enum Mood {
|
enum Mood {
|
||||||
Sad,
|
VerySad,
|
||||||
#[postgres(name = "okay")]
|
#[postgres(name = "okay")]
|
||||||
Ok,
|
Ok,
|
||||||
Happy,
|
VeryHappy,
|
||||||
}
|
}
|
||||||
|
|
||||||
let mut conn = Client::connect("user=postgres host=localhost port=5433", NoTls).unwrap();
|
let mut conn = Client::connect("user=postgres host=localhost port=5433", NoTls).unwrap();
|
||||||
conn.execute(
|
conn.execute(
|
||||||
"CREATE TYPE pg_temp.mood AS ENUM ('sad', 'okay', 'happy')",
|
"CREATE TYPE pg_temp.mood AS ENUM ('very_sad', 'okay', 'very_happy')",
|
||||||
&[],
|
&[],
|
||||||
)
|
)
|
||||||
.unwrap();
|
.unwrap();
|
||||||
@ -75,9 +75,9 @@ fn rename_all_overrides() {
|
|||||||
&mut conn,
|
&mut conn,
|
||||||
"mood",
|
"mood",
|
||||||
&[
|
&[
|
||||||
(Mood::Sad, "'sad'"),
|
(Mood::VerySad, "'very_sad'"),
|
||||||
(Mood::Ok, "'okay'"),
|
(Mood::Ok, "'okay'"),
|
||||||
(Mood::Happy, "'happy'"),
|
(Mood::VeryHappy, "'very_happy'"),
|
||||||
],
|
],
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
@ -17,10 +17,10 @@ use crate::overrides::Overrides;
|
|||||||
pub fn expand_derive_fromsql(input: DeriveInput) -> Result<TokenStream, Error> {
|
pub fn expand_derive_fromsql(input: DeriveInput) -> Result<TokenStream, Error> {
|
||||||
let overrides = Overrides::extract(&input.attrs, true)?;
|
let overrides = Overrides::extract(&input.attrs, true)?;
|
||||||
|
|
||||||
if overrides.name.is_some() && overrides.transparent {
|
if (overrides.name.is_some() || overrides.rename_all.is_some()) && overrides.transparent {
|
||||||
return Err(Error::new_spanned(
|
return Err(Error::new_spanned(
|
||||||
&input,
|
&input,
|
||||||
"#[postgres(transparent)] is not allowed with #[postgres(name = \"...\")]",
|
"#[postgres(transparent)] is not allowed with #[postgres(name = \"...\")] or #[postgres(rename_all = \"...\")]",
|
||||||
));
|
));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -15,10 +15,10 @@ use crate::overrides::Overrides;
|
|||||||
pub fn expand_derive_tosql(input: DeriveInput) -> Result<TokenStream, Error> {
|
pub fn expand_derive_tosql(input: DeriveInput) -> Result<TokenStream, Error> {
|
||||||
let overrides = Overrides::extract(&input.attrs, true)?;
|
let overrides = Overrides::extract(&input.attrs, true)?;
|
||||||
|
|
||||||
if overrides.name.is_some() && overrides.transparent {
|
if (overrides.name.is_some() || overrides.rename_all.is_some()) && overrides.transparent {
|
||||||
return Err(Error::new_spanned(
|
return Err(Error::new_spanned(
|
||||||
&input,
|
&input,
|
||||||
"#[postgres(transparent)] is not allowed with #[postgres(name = \"...\")]",
|
"#[postgres(transparent)] is not allowed with #[postgres(name = \"...\")] or #[postgres(rename_all = \"...\")]",
|
||||||
));
|
));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -125,6 +125,37 @@
|
|||||||
//! Happy,
|
//! Happy,
|
||||||
//! }
|
//! }
|
||||||
//! ```
|
//! ```
|
||||||
|
//!
|
||||||
|
//! Alternatively, the `#[postgres(rename_all = "...")]` attribute can be used to rename all fields or variants
|
||||||
|
//! with the chosen casing convention. This will not affect the struct or enum's type name. Note that
|
||||||
|
//! `#[postgres(name = "...")]` takes precendence when used in conjunction with `#[postgres(rename_all = "...")]`:
|
||||||
|
//!
|
||||||
|
//! ```rust
|
||||||
|
//! # #[cfg(feature = "derive")]
|
||||||
|
//! use postgres_types::{ToSql, FromSql};
|
||||||
|
//!
|
||||||
|
//! # #[cfg(feature = "derive")]
|
||||||
|
//! #[derive(Debug, ToSql, FromSql)]
|
||||||
|
//! #[postgres(name = "mood", rename_all = "snake_case")]
|
||||||
|
//! enum Mood {
|
||||||
|
//! VerySad, // very_sad
|
||||||
|
//! #[postgres(name = "ok")]
|
||||||
|
//! Ok, // ok
|
||||||
|
//! VeryHappy, // very_happy
|
||||||
|
//! }
|
||||||
|
//! ```
|
||||||
|
//!
|
||||||
|
//! The following case conventions are supported:
|
||||||
|
//! - `"lowercase"`
|
||||||
|
//! - `"UPPERCASE"`
|
||||||
|
//! - `"PascalCase"`
|
||||||
|
//! - `"camelCase"`
|
||||||
|
//! - `"snake_case"`
|
||||||
|
//! - `"SCREAMING_SNAKE_CASE"`
|
||||||
|
//! - `"kebab-case"`
|
||||||
|
//! - `"SCREAMING-KEBAB-CASE"`
|
||||||
|
//! - `"Train-Case"`
|
||||||
|
|
||||||
#![doc(html_root_url = "https://docs.rs/postgres-types/0.2")]
|
#![doc(html_root_url = "https://docs.rs/postgres-types/0.2")]
|
||||||
#![warn(clippy::all, rust_2018_idioms, missing_docs)]
|
#![warn(clippy::all, rust_2018_idioms, missing_docs)]
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user