diff --git a/README.md b/README.md index c5345d22..fa05785c 100644 --- a/README.md +++ b/README.md @@ -17,7 +17,7 @@ Inspired by ActiveRecord, Eloquent and TypeORM, SeaORM aims to provide you an intuitive and ergonomic API to make working with databases in Rust a first-class experience. -```rust +```markdown This is a preview of SeaORM, and is not yet released. ``` @@ -145,9 +145,9 @@ fruit::Entity::delete_many() Licensed under either of - Apache License, Version 2.0 - ([LICENSE-APACHE](LICENSE-APACHE) or http://www.apache.org/licenses/LICENSE-2.0) + ([LICENSE-APACHE](LICENSE-APACHE) or ) - MIT license - ([LICENSE-MIT](LICENSE-MIT) or http://opensource.org/licenses/MIT) + ([LICENSE-MIT](LICENSE-MIT) or ) at your option. diff --git a/src/entity/column.rs b/src/entity/column.rs index d6580e8f..31477eee 100644 --- a/src/entity/column.rs +++ b/src/entity/column.rs @@ -88,12 +88,12 @@ pub trait ColumnTrait: IdenStatic + Iterable { bind_oper!(lte); /// ``` - /// use sea_orm::{entity::*, query::*, tests_cfg::cake, sea_query::MysqlQueryBuilder}; + /// use sea_orm::{entity::*, query::*, tests_cfg::cake, Syntax}; /// /// assert_eq!( /// cake::Entity::find() /// .filter(cake::Column::Id.between(2,3)) - /// .build(MysqlQueryBuilder) + /// .build(Syntax::MySql) /// .to_string(), /// "SELECT `cake`.`id`, `cake`.`name` FROM `cake` WHERE `cake`.`id` BETWEEN 2 AND 3" /// ); @@ -106,12 +106,12 @@ pub trait ColumnTrait: IdenStatic + Iterable { } /// ``` - /// use sea_orm::{entity::*, query::*, tests_cfg::cake, sea_query::MysqlQueryBuilder}; + /// use sea_orm::{entity::*, query::*, tests_cfg::cake, Syntax}; /// /// assert_eq!( /// cake::Entity::find() /// .filter(cake::Column::Id.not_between(2,3)) - /// .build(MysqlQueryBuilder) + /// .build(Syntax::MySql) /// .to_string(), /// "SELECT `cake`.`id`, `cake`.`name` FROM `cake` WHERE `cake`.`id` NOT BETWEEN 2 AND 3" /// ); @@ -124,12 +124,12 @@ pub trait ColumnTrait: IdenStatic + Iterable { } /// ``` - /// use sea_orm::{entity::*, query::*, tests_cfg::cake, sea_query::MysqlQueryBuilder}; + /// use sea_orm::{entity::*, query::*, tests_cfg::cake, Syntax}; /// /// assert_eq!( /// cake::Entity::find() /// .filter(cake::Column::Name.like("cheese")) - /// .build(MysqlQueryBuilder) + /// .build(Syntax::MySql) /// .to_string(), /// "SELECT `cake`.`id`, `cake`.`name` FROM `cake` WHERE `cake`.`name` LIKE 'cheese'" /// ); @@ -139,12 +139,12 @@ pub trait ColumnTrait: IdenStatic + Iterable { } /// ``` - /// use sea_orm::{entity::*, query::*, tests_cfg::cake, sea_query::MysqlQueryBuilder}; + /// use sea_orm::{entity::*, query::*, tests_cfg::cake, Syntax}; /// /// assert_eq!( /// cake::Entity::find() /// .filter(cake::Column::Name.not_like("cheese")) - /// .build(MysqlQueryBuilder) + /// .build(Syntax::MySql) /// .to_string(), /// "SELECT `cake`.`id`, `cake`.`name` FROM `cake` WHERE `cake`.`name` NOT LIKE 'cheese'" /// ); @@ -154,12 +154,12 @@ pub trait ColumnTrait: IdenStatic + Iterable { } /// ``` - /// use sea_orm::{entity::*, query::*, tests_cfg::cake, sea_query::MysqlQueryBuilder}; + /// use sea_orm::{entity::*, query::*, tests_cfg::cake, Syntax}; /// /// assert_eq!( /// cake::Entity::find() /// .filter(cake::Column::Name.starts_with("cheese")) - /// .build(MysqlQueryBuilder) + /// .build(Syntax::MySql) /// .to_string(), /// "SELECT `cake`.`id`, `cake`.`name` FROM `cake` WHERE `cake`.`name` LIKE 'cheese%'" /// ); @@ -170,12 +170,12 @@ pub trait ColumnTrait: IdenStatic + Iterable { } /// ``` - /// use sea_orm::{entity::*, query::*, tests_cfg::cake, sea_query::MysqlQueryBuilder}; + /// use sea_orm::{entity::*, query::*, tests_cfg::cake, Syntax}; /// /// assert_eq!( /// cake::Entity::find() /// .filter(cake::Column::Name.ends_with("cheese")) - /// .build(MysqlQueryBuilder) + /// .build(Syntax::MySql) /// .to_string(), /// "SELECT `cake`.`id`, `cake`.`name` FROM `cake` WHERE `cake`.`name` LIKE '%cheese'" /// ); @@ -186,12 +186,12 @@ pub trait ColumnTrait: IdenStatic + Iterable { } /// ``` - /// use sea_orm::{entity::*, query::*, tests_cfg::cake, sea_query::MysqlQueryBuilder}; + /// use sea_orm::{entity::*, query::*, tests_cfg::cake, Syntax}; /// /// assert_eq!( /// cake::Entity::find() /// .filter(cake::Column::Name.contains("cheese")) - /// .build(MysqlQueryBuilder) + /// .build(Syntax::MySql) /// .to_string(), /// "SELECT `cake`.`id`, `cake`.`name` FROM `cake` WHERE `cake`.`name` LIKE '%cheese%'" /// ); diff --git a/src/lib.rs b/src/lib.rs index e80fb521..5d602897 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -17,7 +17,7 @@ //! Inspired by ActiveRecord, Eloquent and TypeORM, SeaORM aims to provide you an intuitive and ergonomic //! API to make working with databases in Rust a first-class experience. //! -//! ```ignore +//! ```markdown //! This is a preview of SeaORM, and is not yet released. //! ``` //! diff --git a/src/query/combine.rs b/src/query/combine.rs index f52b7925..2cf02acd 100644 --- a/src/query/combine.rs +++ b/src/query/combine.rs @@ -113,8 +113,7 @@ where #[cfg(test)] mod tests { use crate::tests_cfg::{cake, fruit}; - use crate::{ColumnTrait, EntityTrait, QueryFilter, QuerySelect, QueryTrait}; - use sea_query::MysqlQueryBuilder; + use crate::{ColumnTrait, EntityTrait, QueryFilter, QuerySelect, QueryTrait, Syntax}; #[test] fn alias_1() { @@ -122,7 +121,7 @@ mod tests { cake::Entity::find() .column_as(cake::Column::Id, "B") .apply_alias("A_") - .build(MysqlQueryBuilder) + .build(Syntax::MySql) .to_string(), "SELECT `cake`.`id` AS `A_id`, `cake`.`name` AS `A_name`, `cake`.`id` AS `A_B` FROM `cake`", ); @@ -134,7 +133,7 @@ mod tests { cake::Entity::find() .left_join(fruit::Entity) .select_also(fruit::Entity) - .build(MysqlQueryBuilder) + .build(Syntax::MySql) .to_string(), [ "SELECT `cake`.`id` AS `A_id`, `cake`.`name` AS `A_name`,", @@ -150,7 +149,7 @@ mod tests { cake::Entity::find() .left_join(fruit::Entity) .select_with(fruit::Entity) - .build(MysqlQueryBuilder) + .build(Syntax::MySql) .to_string(), [ "SELECT `cake`.`id` AS `A_id`, `cake`.`name` AS `A_name`,", @@ -169,7 +168,7 @@ mod tests { .select_also(fruit::Entity) .filter(cake::Column::Id.eq(1)) .filter(fruit::Column::Id.eq(2)) - .build(MysqlQueryBuilder) + .build(Syntax::MySql) .to_string(), [ "SELECT `cake`.`id` AS `A_id`, `cake`.`name` AS `A_name`,", @@ -188,7 +187,7 @@ mod tests { .select_with(fruit::Entity) .filter(cake::Column::Id.eq(1)) .filter(fruit::Column::Id.eq(2)) - .build(MysqlQueryBuilder) + .build(Syntax::MySql) .to_string(), [ "SELECT `cake`.`id` AS `A_id`, `cake`.`name` AS `A_name`,", diff --git a/src/query/delete.rs b/src/query/delete.rs index 467a6980..c303c84d 100644 --- a/src/query/delete.rs +++ b/src/query/delete.rs @@ -31,28 +31,28 @@ impl Delete { /// /// Model /// ``` - /// use sea_orm::{entity::*, query::*, tests_cfg::cake, sea_query::PostgresQueryBuilder}; + /// use sea_orm::{entity::*, query::*, tests_cfg::cake, Syntax}; /// /// assert_eq!( /// Delete::one(cake::Model { /// id: 1, /// name: "Apple Pie".to_owned(), /// }) - /// .build(PostgresQueryBuilder) + /// .build(Syntax::Postgres) /// .to_string(), /// r#"DELETE FROM "cake" WHERE "cake"."id" = 1"#, /// ); /// ``` /// ActiveModel /// ``` - /// use sea_orm::{entity::*, query::*, tests_cfg::cake, sea_query::PostgresQueryBuilder}; + /// use sea_orm::{entity::*, query::*, tests_cfg::cake, Syntax}; /// /// assert_eq!( /// Delete::one(cake::ActiveModel { /// id: ActiveValue::set(1), /// name: ActiveValue::set("Apple Pie".to_owned()), /// }) - /// .build(PostgresQueryBuilder) + /// .build(Syntax::Postgres) /// .to_string(), /// r#"DELETE FROM "cake" WHERE "cake"."id" = 1"#, /// ); @@ -75,12 +75,12 @@ impl Delete { /// Delete many ActiveModel /// /// ``` - /// use sea_orm::{entity::*, query::*, tests_cfg::fruit, sea_query::{Expr, PostgresQueryBuilder}}; + /// use sea_orm::{entity::*, query::*, tests_cfg::fruit, Syntax}; /// /// assert_eq!( /// Delete::many(fruit::Entity) /// .filter(fruit::Column::Name.contains("Apple")) - /// .build(PostgresQueryBuilder) + /// .build(Syntax::Postgres) /// .to_string(), /// r#"DELETE FROM "fruit" WHERE "fruit"."name" LIKE '%Apple%'"#, /// ); @@ -179,8 +179,7 @@ where #[cfg(test)] mod tests { use crate::tests_cfg::{cake, fruit}; - use crate::{entity::*, query::*}; - use sea_query::PostgresQueryBuilder; + use crate::{entity::*, query::*, Syntax}; #[test] fn delete_1() { @@ -189,7 +188,7 @@ mod tests { id: 1, name: "Apple Pie".to_owned(), }) - .build(PostgresQueryBuilder) + .build(Syntax::Postgres) .to_string(), r#"DELETE FROM "cake" WHERE "cake"."id" = 1"#, ); @@ -198,7 +197,7 @@ mod tests { id: ActiveValue::set(1), name: ActiveValue::set("Apple Pie".to_owned()), }) - .build(PostgresQueryBuilder) + .build(Syntax::Postgres) .to_string(), r#"DELETE FROM "cake" WHERE "cake"."id" = 1"#, ); @@ -209,7 +208,7 @@ mod tests { assert_eq!( Delete::many(fruit::Entity) .filter(fruit::Column::Name.contains("Cheese")) - .build(PostgresQueryBuilder) + .build(Syntax::Postgres) .to_string(), r#"DELETE FROM "fruit" WHERE "fruit"."name" LIKE '%Cheese%'"#, ); diff --git a/src/query/helper.rs b/src/query/helper.rs index 7044c63d..0d46c764 100644 --- a/src/query/helper.rs +++ b/src/query/helper.rs @@ -23,13 +23,13 @@ pub trait QuerySelect: Sized { /// Add a select column /// ``` - /// use sea_orm::{entity::*, query::*, tests_cfg::cake, sea_query::PostgresQueryBuilder}; + /// use sea_orm::{entity::*, query::*, tests_cfg::cake, Syntax}; /// /// assert_eq!( /// cake::Entity::find() /// .select_only() /// .column(cake::Column::Name) - /// .build(PostgresQueryBuilder) + /// .build(Syntax::Postgres) /// .to_string(), /// r#"SELECT "cake"."name" FROM "cake""# /// ); @@ -44,13 +44,13 @@ pub trait QuerySelect: Sized { /// Add a select column with alias /// ``` - /// use sea_orm::{entity::*, query::*, tests_cfg::cake, sea_query::PostgresQueryBuilder}; + /// use sea_orm::{entity::*, query::*, tests_cfg::cake, Syntax}; /// /// assert_eq!( /// cake::Entity::find() /// .select_only() /// .column_as(cake::Column::Id.count(), "count") - /// .build(PostgresQueryBuilder) + /// .build(Syntax::Postgres) /// .to_string(), /// r#"SELECT COUNT("cake"."id") AS "count" FROM "cake""# /// ); @@ -68,14 +68,14 @@ pub trait QuerySelect: Sized { /// Add a group by column /// ``` - /// use sea_orm::{entity::*, query::*, tests_cfg::cake, sea_query::PostgresQueryBuilder}; + /// use sea_orm::{entity::*, query::*, tests_cfg::cake, Syntax}; /// /// assert_eq!( /// cake::Entity::find() /// .select_only() /// .column(cake::Column::Name) /// .group_by(cake::Column::Name) - /// .build(PostgresQueryBuilder) + /// .build(Syntax::Postgres) /// .to_string(), /// r#"SELECT "cake"."name" FROM "cake" GROUP BY "cake"."name""# /// ); @@ -90,13 +90,13 @@ pub trait QuerySelect: Sized { /// Add an AND HAVING expression /// ``` - /// use sea_orm::{entity::*, query::*, tests_cfg::cake, sea_query::MysqlQueryBuilder}; + /// use sea_orm::{entity::*, query::*, tests_cfg::cake, Syntax}; /// /// assert_eq!( /// cake::Entity::find() /// .having(cake::Column::Id.eq(4)) /// .having(cake::Column::Id.eq(5)) - /// .build(MysqlQueryBuilder) + /// .build(Syntax::MySql) /// .to_string(), /// "SELECT `cake`.`id`, `cake`.`name` FROM `cake` HAVING `cake`.`id` = 4 AND `cake`.`id` = 5" /// ); @@ -151,13 +151,13 @@ pub trait QueryOrder: Sized { /// Add an order_by expression /// ``` - /// use sea_orm::{entity::*, query::*, tests_cfg::cake, sea_query::MysqlQueryBuilder}; + /// use sea_orm::{entity::*, query::*, tests_cfg::cake, Syntax}; /// /// assert_eq!( /// cake::Entity::find() /// .order_by(cake::Column::Id, Order::Asc) /// .order_by(cake::Column::Name, Order::Desc) - /// .build(MysqlQueryBuilder) + /// .build(Syntax::MySql) /// .to_string(), /// "SELECT `cake`.`id`, `cake`.`name` FROM `cake` ORDER BY `cake`.`id` ASC, `cake`.`name` DESC" /// ); @@ -172,12 +172,12 @@ pub trait QueryOrder: Sized { /// Add an order_by expression (ascending) /// ``` - /// use sea_orm::{entity::*, query::*, tests_cfg::cake, sea_query::MysqlQueryBuilder}; + /// use sea_orm::{entity::*, query::*, tests_cfg::cake, Syntax}; /// /// assert_eq!( /// cake::Entity::find() /// .order_by_asc(cake::Column::Id) - /// .build(MysqlQueryBuilder) + /// .build(Syntax::MySql) /// .to_string(), /// "SELECT `cake`.`id`, `cake`.`name` FROM `cake` ORDER BY `cake`.`id` ASC" /// ); @@ -193,12 +193,12 @@ pub trait QueryOrder: Sized { /// Add an order_by expression (descending) /// ``` - /// use sea_orm::{entity::*, query::*, tests_cfg::cake, sea_query::MysqlQueryBuilder}; + /// use sea_orm::{entity::*, query::*, tests_cfg::cake, Syntax}; /// /// assert_eq!( /// cake::Entity::find() /// .order_by_desc(cake::Column::Id) - /// .build(MysqlQueryBuilder) + /// .build(Syntax::MySql) /// .to_string(), /// "SELECT `cake`.`id`, `cake`.`name` FROM `cake` ORDER BY `cake`.`id` DESC" /// ); @@ -221,13 +221,13 @@ pub trait QueryFilter: Sized { /// Add an AND WHERE expression /// ``` - /// use sea_orm::{entity::*, query::*, tests_cfg::cake, sea_query::MysqlQueryBuilder}; + /// use sea_orm::{entity::*, query::*, tests_cfg::cake, Syntax}; /// /// assert_eq!( /// cake::Entity::find() /// .filter(cake::Column::Id.eq(4)) /// .filter(cake::Column::Id.eq(5)) - /// .build(MysqlQueryBuilder) + /// .build(Syntax::MySql) /// .to_string(), /// "SELECT `cake`.`id`, `cake`.`name` FROM `cake` WHERE `cake`.`id` = 4 AND `cake`.`id` = 5" /// ); @@ -235,7 +235,7 @@ pub trait QueryFilter: Sized { /// /// Add a condition tree. /// ``` - /// use sea_orm::{entity::*, query::*, tests_cfg::cake, sea_query::MysqlQueryBuilder}; + /// use sea_orm::{entity::*, query::*, tests_cfg::cake, Syntax}; /// /// assert_eq!( /// cake::Entity::find() @@ -244,7 +244,7 @@ pub trait QueryFilter: Sized { /// .add(cake::Column::Id.eq(4)) /// .add(cake::Column::Id.eq(5)) /// ) - /// .build(MysqlQueryBuilder) + /// .build(Syntax::MySql) /// .to_string(), /// "SELECT `cake`.`id`, `cake`.`name` FROM `cake` WHERE `cake`.`id` = 4 OR `cake`.`id` = 5" /// ); diff --git a/src/query/insert.rs b/src/query/insert.rs index 5ed11a46..e57ed7f7 100644 --- a/src/query/insert.rs +++ b/src/query/insert.rs @@ -39,28 +39,28 @@ where /// /// Model /// ``` - /// use sea_orm::{entity::*, query::*, tests_cfg::cake, sea_query::PostgresQueryBuilder}; + /// use sea_orm::{entity::*, query::*, tests_cfg::cake, Syntax}; /// /// assert_eq!( /// Insert::one(cake::Model { /// id: 1, /// name: "Apple Pie".to_owned(), /// }) - /// .build(PostgresQueryBuilder) + /// .build(Syntax::Postgres) /// .to_string(), /// r#"INSERT INTO "cake" ("id", "name") VALUES (1, 'Apple Pie')"#, /// ); /// ``` /// ActiveModel /// ``` - /// use sea_orm::{entity::*, query::*, tests_cfg::cake, sea_query::PostgresQueryBuilder}; + /// use sea_orm::{entity::*, query::*, tests_cfg::cake, Syntax}; /// /// assert_eq!( /// Insert::one(cake::ActiveModel { /// id: Unset(None), /// name: Set("Apple Pie".to_owned()), /// }) - /// .build(PostgresQueryBuilder) + /// .build(Syntax::Postgres) /// .to_string(), /// r#"INSERT INTO "cake" ("name") VALUES ('Apple Pie')"#, /// ); @@ -75,7 +75,7 @@ where /// Insert many Model or ActiveModel /// /// ``` - /// use sea_orm::{entity::*, query::*, tests_cfg::cake, sea_query::PostgresQueryBuilder}; + /// use sea_orm::{entity::*, query::*, tests_cfg::cake, Syntax}; /// /// assert_eq!( /// Insert::many(vec![ @@ -88,7 +88,7 @@ where /// name: "Orange Scone".to_owned(), /// } /// ]) - /// .build(PostgresQueryBuilder) + /// .build(Syntax::Postgres) /// .to_string(), /// r#"INSERT INTO "cake" ("id", "name") VALUES (1, 'Apple Pie'), (2, 'Orange Scone')"#, /// ); @@ -162,8 +162,7 @@ where #[cfg(test)] mod tests { use crate::tests_cfg::cake; - use crate::{ActiveValue, Insert, QueryTrait}; - use sea_query::PostgresQueryBuilder; + use crate::{ActiveValue, Insert, QueryTrait, Syntax}; #[test] fn insert_1() { @@ -173,7 +172,7 @@ mod tests { id: ActiveValue::unset(), name: ActiveValue::set("Apple Pie".to_owned()), }) - .build(PostgresQueryBuilder) + .build(Syntax::Postgres) .to_string(), r#"INSERT INTO "cake" ("name") VALUES ('Apple Pie')"#, ); @@ -187,7 +186,7 @@ mod tests { id: ActiveValue::set(1), name: ActiveValue::set("Apple Pie".to_owned()), }) - .build(PostgresQueryBuilder) + .build(Syntax::Postgres) .to_string(), r#"INSERT INTO "cake" ("id", "name") VALUES (1, 'Apple Pie')"#, ); @@ -201,7 +200,7 @@ mod tests { id: 1, name: "Apple Pie".to_owned(), }) - .build(PostgresQueryBuilder) + .build(Syntax::Postgres) .to_string(), r#"INSERT INTO "cake" ("id", "name") VALUES (1, 'Apple Pie')"#, ); @@ -221,7 +220,7 @@ mod tests { name: "Orange Scone".to_owned(), } ]) - .build(PostgresQueryBuilder) + .build(Syntax::Postgres) .to_string(), r#"INSERT INTO "cake" ("id", "name") VALUES (1, 'Apple Pie'), (2, 'Orange Scone')"#, ); @@ -241,7 +240,7 @@ mod tests { assert_eq!( Insert::::new() .add_many(vec![apple, orange]) - .build(PostgresQueryBuilder) + .build(Syntax::Postgres) .to_string(), r#"INSERT INTO "cake" ("id", "name") VALUES (NULL, 'Apple'), (2, 'Orange')"#, ); diff --git a/src/query/join.rs b/src/query/join.rs index 4481f5af..97e536da 100644 --- a/src/query/join.rs +++ b/src/query/join.rs @@ -62,15 +62,14 @@ where #[cfg(test)] mod tests { use crate::tests_cfg::{cake, filling, fruit}; - use crate::{ColumnTrait, EntityTrait, ModelTrait, QueryFilter, QueryTrait}; - use sea_query::MysqlQueryBuilder; + use crate::{ColumnTrait, EntityTrait, ModelTrait, QueryFilter, QueryTrait, Syntax}; #[test] fn join_1() { assert_eq!( cake::Entity::find() .left_join(fruit::Entity) - .build(MysqlQueryBuilder) + .build(Syntax::MySql) .to_string(), [ "SELECT `cake`.`id`, `cake`.`name` FROM `cake`", @@ -86,7 +85,7 @@ mod tests { cake::Entity::find() .inner_join(fruit::Entity) .filter(fruit::Column::Name.contains("cherry")) - .build(MysqlQueryBuilder) + .build(Syntax::MySql) .to_string(), [ "SELECT `cake`.`id`, `cake`.`name` FROM `cake`", @@ -102,7 +101,7 @@ mod tests { assert_eq!( fruit::Entity::find() .reverse_join(cake::Entity) - .build(MysqlQueryBuilder) + .build(Syntax::MySql) .to_string(), [ "SELECT `fruit`.`id`, `fruit`.`name`, `fruit`.`cake_id` FROM `fruit`", @@ -120,7 +119,7 @@ mod tests { assert_eq!( find_fruit .filter(cake::Column::Id.eq(11)) - .build(MysqlQueryBuilder) + .build(Syntax::MySql) .to_string(), [ "SELECT `fruit`.`id`, `fruit`.`name`, `fruit`.`cake_id` FROM `fruit`", @@ -141,7 +140,7 @@ mod tests { assert_eq!( cake_model .find_related(fruit::Entity) - .build(MysqlQueryBuilder) + .build(Syntax::MySql) .to_string(), [ "SELECT `fruit`.`id`, `fruit`.`name`, `fruit`.`cake_id` FROM `fruit`", @@ -157,7 +156,7 @@ mod tests { assert_eq!( cake::Entity::find() .left_join(filling::Entity) - .build(MysqlQueryBuilder) + .build(Syntax::MySql) .to_string(), [ "SELECT `cake`.`id`, `cake`.`name` FROM `cake`", @@ -174,7 +173,7 @@ mod tests { let find_filling: Select = cake::Entity::find_related(); assert_eq!( - find_filling.build(MysqlQueryBuilder).to_string(), + find_filling.build(Syntax::MySql).to_string(), [ "SELECT `filling`.`id`, `filling`.`name` FROM `filling`", "INNER JOIN `cake_filling` ON `cake_filling`.`filling_id` = `filling`.`id`", diff --git a/src/query/traits.rs b/src/query/traits.rs index 1d1d2914..cda54737 100644 --- a/src/query/traits.rs +++ b/src/query/traits.rs @@ -14,11 +14,12 @@ pub trait QueryTrait { fn into_query(self) -> Self::QueryStatement; /// Build the query as [`Statement`] - fn build(&self, builder: B) -> Statement - where - B: QueryBuilderWithSyntax, - { - Statement::from_string_values_tuple(builder.syntax(), self.as_query().build(builder)) + fn build(&self, syntax: Syntax) -> Statement { + let query_builder = syntax.get_query_builder(); + Statement::from_string_values_tuple( + syntax, + self.as_query().build_any(query_builder.as_ref()), + ) } } diff --git a/src/query/update.rs b/src/query/update.rs index dc3ee663..0b5de146 100644 --- a/src/query/update.rs +++ b/src/query/update.rs @@ -30,14 +30,14 @@ impl Update { /// Update one ActiveModel /// /// ``` - /// use sea_orm::{entity::*, query::*, tests_cfg::cake, sea_query::PostgresQueryBuilder}; + /// use sea_orm::{entity::*, query::*, tests_cfg::cake, Syntax}; /// /// assert_eq!( /// Update::one(cake::ActiveModel { /// id: ActiveValue::set(1), /// name: ActiveValue::set("Apple Pie".to_owned()), /// }) - /// .build(PostgresQueryBuilder) + /// .build(Syntax::Postgres) /// .to_string(), /// r#"UPDATE "cake" SET "name" = 'Apple Pie' WHERE "cake"."id" = 1"#, /// ); @@ -59,13 +59,13 @@ impl Update { /// Update many ActiveModel /// /// ``` - /// use sea_orm::{entity::*, query::*, tests_cfg::fruit, sea_query::{Expr, PostgresQueryBuilder}}; + /// use sea_orm::{entity::*, query::*, tests_cfg::fruit, sea_query::Expr, Syntax}; /// /// assert_eq!( /// Update::many(fruit::Entity) /// .col_expr(fruit::Column::Name, Expr::value("Golden Apple")) /// .filter(fruit::Column::Name.contains("Apple")) - /// .build(PostgresQueryBuilder) + /// .build(Syntax::Postgres) /// .to_string(), /// r#"UPDATE "fruit" SET "name" = 'Golden Apple' WHERE "fruit"."name" LIKE '%Apple%'"#, /// ); @@ -184,8 +184,8 @@ where #[cfg(test)] mod tests { use crate::tests_cfg::{cake, fruit}; - use crate::{entity::*, query::*}; - use sea_query::{Expr, PostgresQueryBuilder, Value}; + use crate::{entity::*, query::*, Syntax}; + use sea_query::{Expr, Value}; #[test] fn update_1() { @@ -194,7 +194,7 @@ mod tests { id: ActiveValue::set(1), name: ActiveValue::set("Apple Pie".to_owned()), }) - .build(PostgresQueryBuilder) + .build(Syntax::Postgres) .to_string(), r#"UPDATE "cake" SET "name" = 'Apple Pie' WHERE "cake"."id" = 1"#, ); @@ -208,7 +208,7 @@ mod tests { name: ActiveValue::set("Orange".to_owned()), cake_id: ActiveValue::unset(), }) - .build(PostgresQueryBuilder) + .build(Syntax::Postgres) .to_string(), r#"UPDATE "fruit" SET "name" = 'Orange' WHERE "fruit"."id" = 1"#, ); @@ -222,7 +222,7 @@ mod tests { name: ActiveValue::unchanged("Apple".to_owned()), cake_id: ActiveValue::set(Some(3)), }) - .build(PostgresQueryBuilder) + .build(Syntax::Postgres) .to_string(), r#"UPDATE "fruit" SET "cake_id" = 3 WHERE "fruit"."id" = 2"#, ); @@ -234,7 +234,7 @@ mod tests { Update::many(fruit::Entity) .col_expr(fruit::Column::CakeId, Expr::value(Value::Null)) .filter(fruit::Column::Id.eq(2)) - .build(PostgresQueryBuilder) + .build(Syntax::Postgres) .to_string(), r#"UPDATE "fruit" SET "cake_id" = NULL WHERE "fruit"."id" = 2"#, );