From ae899d67441ea54cc62aae75b757614278f9789b Mon Sep 17 00:00:00 2001 From: Chris Tsang Date: Thu, 13 Jul 2023 10:25:59 +0100 Subject: [PATCH] Remove sea-query's Iden macro --- CHANGELOG.md | 28 +++++++++++++++++++ Cargo.toml | 4 +-- .../src/m20220120_000001_create_post_table.rs | 3 +- .../src/m20220120_000001_create_post_table.rs | 3 +- .../src/m20220120_000001_create_post_table.rs | 3 +- .../src/m20220101_000001_create_table.rs | 3 +- .../src/m20220120_000001_create_post_table.rs | 3 +- .../src/m20220120_000001_create_post_table.rs | 3 +- .../src/m20220120_000001_create_post_table.rs | 3 +- .../src/m20220120_000001_create_post_table.rs | 3 +- .../src/m20220120_000001_create_post_table.rs | 3 +- .../src/m20220120_000001_create_post_table.rs | 3 +- issues/1473/Cargo.toml | 2 +- issues/1473/src/main.rs | 7 ++--- .../src/m20220101_000001_create_table.rs | 3 +- sea-orm-migration/src/migrator.rs | 21 +++++++------- sea-orm-migration/src/prelude.rs | 2 +- .../m20220118_000001_create_cake_table.rs | 3 +- .../m20220118_000002_create_fruit_table.rs | 3 +- .../m20220118_000004_create_tea_enum.rs | 7 ++--- .../m20220923_000001_seed_cake_table.rs | 3 +- src/entity/active_enum.rs | 6 ++-- src/entity/column.rs | 20 +++++++++---- src/entity/prelude.rs | 5 ++-- 24 files changed, 83 insertions(+), 61 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 915008b7..0bd07bba 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -548,6 +548,34 @@ impl ColumnTrait for Column { * Replace the use of `SeaRc` where `T` isn't `dyn Iden` with `RcOrArc` https://github.com/SeaQL/sea-orm/pull/1661 * Enabled `hashable-value` feature in SeaQuery, thus `Value::Float(NaN) == Value::Float(NaN)` would be true https://github.com/SeaQL/sea-orm/pull/1728, https://github.com/SeaQL/sea-orm/pull/1743 * The `DeriveActiveEnum` derive macro no longer provide `std::fmt::Display` implementation for the enum. You need to derive an extra `DeriveDisplay` macro alongside with `DeriveActiveEnum` derive macro. https://github.com/SeaQL/sea-orm/pull/1726 +* `sea-query/derive` is no longer enabled by `sea-orm`, as such, `Iden` no longer works as a derive macro (it's still a trait). Instead, we are shipping a new macro `DeriveIden`: +```rust +// then: + +#[derive(Iden)] +#[iden = "category"] +pub struct CategoryEnum; + +#[derive(Iden)] +pub enum Tea { + Table, + #[iden = "EverydayTea"] + EverydayTea, +} + +// now: + +#[derive(DeriveIden)] +#[sea_orm(iden = "category")] +pub struct CategoryEnum; + +#[derive(DeriveIden)] +pub enum Tea { + Table, + #[sea_orm(iden = "EverydayTea")] + EverydayTea, +} +``` ## 0.11.3 - 2023-04-24 diff --git a/Cargo.toml b/Cargo.toml index d42f79e1..06f711b6 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -34,7 +34,7 @@ tracing = { version = "0.1", default-features = false, features = ["attributes", rust_decimal = { version = "1", default-features = false, optional = true } bigdecimal = { version = "0.3", default-features = false, optional = true } sea-orm-macros = { version = "0.12.0-rc.4", path = "sea-orm-macros", default-features = false, features = ["strum"] } -sea-query = { version = "0.29.0", features = ["thread-safe", "hashable-value"] } +sea-query = { version = "0.29.0", default-features = false, features = ["thread-safe", "hashable-value", "backend-mysql", "backend-postgres", "backend-sqlite"] } sea-query-binder = { version = "0.4.0-rc.2", default-features = false, optional = true } strum = { version = "0.25", default-features = false } serde = { version = "1.0", default-features = false } @@ -74,7 +74,7 @@ default = [ "with-uuid", "with-time", ] -macros = ["sea-orm-macros/derive", "sea-query/derive"] +macros = ["sea-orm-macros/derive"] mock = [] with-json = ["serde_json", "sea-query/with-json", "chrono?/serde", "time?/serde", "uuid?/serde", "sea-query-binder?/with-json", "sqlx?/json"] with-chrono = ["chrono", "sea-query/with-chrono", "sea-query-binder?/with-chrono", "sqlx?/chrono"] diff --git a/examples/actix3_example/migration/src/m20220120_000001_create_post_table.rs b/examples/actix3_example/migration/src/m20220120_000001_create_post_table.rs index a2fa0219..12c9fd7d 100644 --- a/examples/actix3_example/migration/src/m20220120_000001_create_post_table.rs +++ b/examples/actix3_example/migration/src/m20220120_000001_create_post_table.rs @@ -32,8 +32,7 @@ impl MigrationTrait for Migration { } } -/// Learn more at https://docs.rs/sea-query#iden -#[derive(Iden)] +#[derive(DeriveIden)] enum Posts { Table, Id, diff --git a/examples/actix_example/migration/src/m20220120_000001_create_post_table.rs b/examples/actix_example/migration/src/m20220120_000001_create_post_table.rs index a2fa0219..12c9fd7d 100644 --- a/examples/actix_example/migration/src/m20220120_000001_create_post_table.rs +++ b/examples/actix_example/migration/src/m20220120_000001_create_post_table.rs @@ -32,8 +32,7 @@ impl MigrationTrait for Migration { } } -/// Learn more at https://docs.rs/sea-query#iden -#[derive(Iden)] +#[derive(DeriveIden)] enum Posts { Table, Id, diff --git a/examples/axum_example/migration/src/m20220120_000001_create_post_table.rs b/examples/axum_example/migration/src/m20220120_000001_create_post_table.rs index a2fa0219..12c9fd7d 100644 --- a/examples/axum_example/migration/src/m20220120_000001_create_post_table.rs +++ b/examples/axum_example/migration/src/m20220120_000001_create_post_table.rs @@ -32,8 +32,7 @@ impl MigrationTrait for Migration { } } -/// Learn more at https://docs.rs/sea-query#iden -#[derive(Iden)] +#[derive(DeriveIden)] enum Posts { Table, Id, diff --git a/examples/graphql_example/migration/src/m20220101_000001_create_table.rs b/examples/graphql_example/migration/src/m20220101_000001_create_table.rs index b7ec5a4d..22d0f82d 100644 --- a/examples/graphql_example/migration/src/m20220101_000001_create_table.rs +++ b/examples/graphql_example/migration/src/m20220101_000001_create_table.rs @@ -32,8 +32,7 @@ impl MigrationTrait for Migration { } } -/// Learn more at https://docs.rs/sea-query#iden -#[derive(Iden)] +#[derive(DeriveIden)] enum Notes { Table, Id, diff --git a/examples/jsonrpsee_example/migration/src/m20220120_000001_create_post_table.rs b/examples/jsonrpsee_example/migration/src/m20220120_000001_create_post_table.rs index a2fa0219..12c9fd7d 100644 --- a/examples/jsonrpsee_example/migration/src/m20220120_000001_create_post_table.rs +++ b/examples/jsonrpsee_example/migration/src/m20220120_000001_create_post_table.rs @@ -32,8 +32,7 @@ impl MigrationTrait for Migration { } } -/// Learn more at https://docs.rs/sea-query#iden -#[derive(Iden)] +#[derive(DeriveIden)] enum Posts { Table, Id, diff --git a/examples/poem_example/migration/src/m20220120_000001_create_post_table.rs b/examples/poem_example/migration/src/m20220120_000001_create_post_table.rs index a2fa0219..12c9fd7d 100644 --- a/examples/poem_example/migration/src/m20220120_000001_create_post_table.rs +++ b/examples/poem_example/migration/src/m20220120_000001_create_post_table.rs @@ -32,8 +32,7 @@ impl MigrationTrait for Migration { } } -/// Learn more at https://docs.rs/sea-query#iden -#[derive(Iden)] +#[derive(DeriveIden)] enum Posts { Table, Id, diff --git a/examples/rocket_example/migration/src/m20220120_000001_create_post_table.rs b/examples/rocket_example/migration/src/m20220120_000001_create_post_table.rs index a2fa0219..12c9fd7d 100644 --- a/examples/rocket_example/migration/src/m20220120_000001_create_post_table.rs +++ b/examples/rocket_example/migration/src/m20220120_000001_create_post_table.rs @@ -32,8 +32,7 @@ impl MigrationTrait for Migration { } } -/// Learn more at https://docs.rs/sea-query#iden -#[derive(Iden)] +#[derive(DeriveIden)] enum Posts { Table, Id, diff --git a/examples/rocket_okapi_example/migration/src/m20220120_000001_create_post_table.rs b/examples/rocket_okapi_example/migration/src/m20220120_000001_create_post_table.rs index a2fa0219..12c9fd7d 100644 --- a/examples/rocket_okapi_example/migration/src/m20220120_000001_create_post_table.rs +++ b/examples/rocket_okapi_example/migration/src/m20220120_000001_create_post_table.rs @@ -32,8 +32,7 @@ impl MigrationTrait for Migration { } } -/// Learn more at https://docs.rs/sea-query#iden -#[derive(Iden)] +#[derive(DeriveIden)] enum Posts { Table, Id, diff --git a/examples/salvo_example/migration/src/m20220120_000001_create_post_table.rs b/examples/salvo_example/migration/src/m20220120_000001_create_post_table.rs index a2fa0219..12c9fd7d 100644 --- a/examples/salvo_example/migration/src/m20220120_000001_create_post_table.rs +++ b/examples/salvo_example/migration/src/m20220120_000001_create_post_table.rs @@ -32,8 +32,7 @@ impl MigrationTrait for Migration { } } -/// Learn more at https://docs.rs/sea-query#iden -#[derive(Iden)] +#[derive(DeriveIden)] enum Posts { Table, Id, diff --git a/examples/tonic_example/migration/src/m20220120_000001_create_post_table.rs b/examples/tonic_example/migration/src/m20220120_000001_create_post_table.rs index a2fa0219..12c9fd7d 100644 --- a/examples/tonic_example/migration/src/m20220120_000001_create_post_table.rs +++ b/examples/tonic_example/migration/src/m20220120_000001_create_post_table.rs @@ -32,8 +32,7 @@ impl MigrationTrait for Migration { } } -/// Learn more at https://docs.rs/sea-query#iden -#[derive(Iden)] +#[derive(DeriveIden)] enum Posts { Table, Id, diff --git a/issues/1473/Cargo.toml b/issues/1473/Cargo.toml index ae5bdae5..84e8f154 100644 --- a/issues/1473/Cargo.toml +++ b/issues/1473/Cargo.toml @@ -10,4 +10,4 @@ publish = false [dependencies.sea-orm] path = "../../" default-features = false -features = ["macros", "runtime-tokio-native-tls"] +features = ["macros", "runtime-tokio-native-tls"] \ No newline at end of file diff --git a/issues/1473/src/main.rs b/issues/1473/src/main.rs index ed691b82..235b85c5 100644 --- a/issues/1473/src/main.rs +++ b/issues/1473/src/main.rs @@ -1,17 +1,16 @@ -use sea_orm::{sea_query::{self, Iden}}; +use sea_orm::{DeriveIden, Iden}; -#[derive(Iden)] +#[derive(DeriveIden)] enum Character { Table, Id, } -#[derive(Iden)] +#[derive(DeriveIden)] struct Glyph; fn main() { assert_eq!(Character::Table.to_string(), "character"); assert_eq!(Character::Id.to_string(), "id"); - assert_eq!(Glyph.to_string(), "glyph"); } diff --git a/sea-orm-cli/template/migration/src/m20220101_000001_create_table.rs b/sea-orm-cli/template/migration/src/m20220101_000001_create_table.rs index b0582446..c8f2a5d1 100644 --- a/sea-orm-cli/template/migration/src/m20220101_000001_create_table.rs +++ b/sea-orm-cli/template/migration/src/m20220101_000001_create_table.rs @@ -38,8 +38,7 @@ impl MigrationTrait for Migration { } } -/// Learn more at https://docs.rs/sea-query#iden -#[derive(Iden)] +#[derive(DeriveIden)] enum Post { Table, Id, diff --git a/sea-orm-migration/src/migrator.rs b/sea-orm-migration/src/migrator.rs index 84adb17f..587951ed 100644 --- a/sea-orm-migration/src/migrator.rs +++ b/sea-orm-migration/src/migrator.rs @@ -6,12 +6,13 @@ use std::time::SystemTime; use tracing::info; use sea_orm::sea_query::{ - self, extension::postgres::Type, Alias, Expr, ForeignKey, Iden, IntoIden, JoinType, Order, - Query, SelectStatement, SimpleExpr, Table, + self, extension::postgres::Type, Alias, Expr, ForeignKey, IntoIden, JoinType, Order, Query, + SelectStatement, SimpleExpr, Table, }; use sea_orm::{ - ActiveModelTrait, ActiveValue, Condition, ConnectionTrait, DbBackend, DbErr, DynIden, - EntityTrait, FromQueryResult, Iterable, QueryFilter, Schema, Statement, TransactionTrait, + ActiveModelTrait, ActiveValue, Condition, ConnectionTrait, DbBackend, DbErr, DeriveIden, + DynIden, EntityTrait, FromQueryResult, Iterable, QueryFilter, Schema, Statement, + TransactionTrait, }; use sea_schema::{mysql::MySql, postgres::Postgres, probe::SchemaProbe, sqlite::Sqlite}; @@ -457,13 +458,13 @@ where } } -#[derive(Iden)] +#[derive(DeriveIden)] enum InformationSchema { - #[iden = "information_schema"] + #[sea_orm(iden = "information_schema")] Schema, - #[iden = "TABLE_NAME"] + #[sea_orm(iden = "TABLE_NAME")] TableName, - #[iden = "CONSTRAINT_NAME"] + #[sea_orm(iden = "CONSTRAINT_NAME")] ConstraintName, TableConstraints, TableSchema, @@ -500,7 +501,7 @@ where stmt } -#[derive(Iden)] +#[derive(DeriveIden)] enum PgType { Table, Typname, @@ -508,7 +509,7 @@ enum PgType { Typelem, } -#[derive(Iden)] +#[derive(DeriveIden)] enum PgNamespace { Table, Oid, diff --git a/sea-orm-migration/src/prelude.rs b/sea-orm-migration/src/prelude.rs index 9b1030ff..3267b1b1 100644 --- a/sea-orm-migration/src/prelude.rs +++ b/sea-orm-migration/src/prelude.rs @@ -9,5 +9,5 @@ pub use async_trait; pub use sea_orm::{ self, sea_query::{self, *}, - ConnectionTrait, DbErr, DeriveMigrationName, + ConnectionTrait, DbErr, DeriveIden, DeriveMigrationName, }; diff --git a/sea-orm-migration/tests/common/migration/m20220118_000001_create_cake_table.rs b/sea-orm-migration/tests/common/migration/m20220118_000001_create_cake_table.rs index f06513aa..370697fb 100644 --- a/sea-orm-migration/tests/common/migration/m20220118_000001_create_cake_table.rs +++ b/sea-orm-migration/tests/common/migration/m20220118_000001_create_cake_table.rs @@ -38,8 +38,7 @@ impl MigrationTrait for Migration { } } -/// Learn more at https://docs.rs/sea-query#iden -#[derive(Iden)] +#[derive(DeriveIden)] pub enum Cake { Table, Id, diff --git a/sea-orm-migration/tests/common/migration/m20220118_000002_create_fruit_table.rs b/sea-orm-migration/tests/common/migration/m20220118_000002_create_fruit_table.rs index 07ead834..4b9ceb45 100644 --- a/sea-orm-migration/tests/common/migration/m20220118_000002_create_fruit_table.rs +++ b/sea-orm-migration/tests/common/migration/m20220118_000002_create_fruit_table.rs @@ -49,8 +49,7 @@ impl MigrationTrait for Migration { } } -/// Learn more at https://docs.rs/sea-query#iden -#[derive(Iden)] +#[derive(DeriveIden)] pub enum Fruit { Table, Id, diff --git a/sea-orm-migration/tests/common/migration/m20220118_000004_create_tea_enum.rs b/sea-orm-migration/tests/common/migration/m20220118_000004_create_tea_enum.rs index ba9b68e6..26661d4a 100644 --- a/sea-orm-migration/tests/common/migration/m20220118_000004_create_tea_enum.rs +++ b/sea-orm-migration/tests/common/migration/m20220118_000004_create_tea_enum.rs @@ -42,12 +42,11 @@ impl MigrationTrait for Migration { } } -/// Learn more at https://docs.rs/sea-query#iden -#[derive(Iden)] +#[derive(DeriveIden)] pub enum Tea { Table, - #[iden = "EverydayTea"] + #[sea_orm(iden = "EverydayTea")] EverydayTea, - #[iden = "BreakfastTea"] + #[sea_orm(iden = "BreakfastTea")] BreakfastTea, } diff --git a/sea-orm-migration/tests/common/migration/m20220923_000001_seed_cake_table.rs b/sea-orm-migration/tests/common/migration/m20220923_000001_seed_cake_table.rs index 16c019bf..5ab38ebb 100644 --- a/sea-orm-migration/tests/common/migration/m20220923_000001_seed_cake_table.rs +++ b/sea-orm-migration/tests/common/migration/m20220923_000001_seed_cake_table.rs @@ -29,8 +29,7 @@ impl MigrationTrait for Migration { } } -/// Learn more at https://docs.rs/sea-query#iden -#[derive(Iden)] +#[derive(DeriveIden)] pub enum Cake { Table, Name, diff --git a/src/entity/active_enum.rs b/src/entity/active_enum.rs index 99e6351d..0f56bd71 100644 --- a/src/entity/active_enum.rs +++ b/src/entity/active_enum.rs @@ -37,7 +37,7 @@ use sea_query::{DynIden, Expr, Nullable, SimpleExpr, Value, ValueType}; /// Small, /// } /// -/// #[derive(Debug, Iden)] +/// #[derive(Debug, DeriveIden)] /// pub struct CategoryEnum; /// /// impl ActiveEnum for Category { @@ -182,8 +182,8 @@ mod tests { Small, } - #[derive(Debug, Iden)] - #[iden = "category"] + #[derive(Debug, DeriveIden)] + #[sea_orm(iden = "category")] pub struct CategoryEnum; impl ActiveEnum for Category { diff --git a/src/entity/column.rs b/src/entity/column.rs index b85bcb61..b263413f 100644 --- a/src/entity/column.rs +++ b/src/entity/column.rs @@ -1,6 +1,6 @@ -use crate::{self as sea_orm, EntityName, IdenStatic, IntoSimpleExpr, Iterable}; +use crate::{EntityName, Iden, IdenStatic, IntoSimpleExpr, Iterable}; use sea_query::{ - Alias, BinOper, DynIden, Expr, Iden, IntoIden, SeaRc, SelectStatement, SimpleExpr, Value, + Alias, BinOper, DynIden, Expr, IntoIden, SeaRc, SelectStatement, SimpleExpr, Value, }; use std::str::FromStr; @@ -381,13 +381,21 @@ impl ColumnDef { } } -#[derive(Iden)] struct Text; - -#[derive(Iden)] -#[iden = "text[]"] struct TextArray; +impl Iden for Text { + fn unquoted(&self, s: &mut dyn std::fmt::Write) { + write!(s, "text").unwrap(); + } +} + +impl Iden for TextArray { + fn unquoted(&self, s: &mut dyn std::fmt::Write) { + write!(s, "text[]").unwrap(); + } +} + fn cast_enum_as(expr: Expr, col: &C, f: F) -> SimpleExpr where C: ColumnTrait, diff --git a/src/entity/prelude.rs b/src/entity/prelude.rs index f335c9c8..ff6d779c 100644 --- a/src/entity/prelude.rs +++ b/src/entity/prelude.rs @@ -11,8 +11,9 @@ pub use crate::{ #[cfg(feature = "macros")] pub use crate::{ DeriveActiveEnum, DeriveActiveModel, DeriveActiveModelBehavior, DeriveColumn, - DeriveCustomColumn, DeriveDisplay, DeriveEntity, DeriveEntityModel, DeriveIntoActiveModel, - DeriveModel, DerivePrimaryKey, DeriveRelatedEntity, DeriveRelation, FromJsonQueryResult, + DeriveCustomColumn, DeriveDisplay, DeriveEntity, DeriveEntityModel, DeriveIden, + DeriveIntoActiveModel, DeriveModel, DerivePrimaryKey, DeriveRelatedEntity, DeriveRelation, + FromJsonQueryResult, }; pub use async_trait;