diff --git a/examples/sqlx-mysql/src/main.rs b/examples/sqlx-mysql/src/main.rs index 7133e795..83501ca7 100644 --- a/examples/sqlx-mysql/src/main.rs +++ b/examples/sqlx-mysql/src/main.rs @@ -1,4 +1,4 @@ -use sea_orm::{ColumnTrait, Database, EntityTrait, FromQueryResult, QueryErr, QueryHelper}; +use sea_orm::{ColumnTrait, Database, EntityTrait, FromQueryResult, QueryErr, SelectHelper}; mod example_cake; mod example_cake_filling; diff --git a/src/entity/base.rs b/src/entity/base.rs index 6926b753..592c90e6 100644 --- a/src/entity/base.rs +++ b/src/entity/base.rs @@ -37,7 +37,7 @@ pub trait EntityTrait: EntityName { } /// ``` - /// use sea_orm::{ColumnTrait, EntityTrait, tests_cfg::cake, sea_query::PostgresQueryBuilder}; + /// use sea_orm::{ColumnTrait, EntityTrait, QueryTrait, tests_cfg::cake, sea_query::PostgresQueryBuilder}; /// /// assert_eq!( /// cake::Entity::find() @@ -52,7 +52,7 @@ pub trait EntityTrait: EntityName { /// Find a model by primary key /// ``` - /// use sea_orm::{ColumnTrait, EntityTrait, tests_cfg::cake, sea_query::PostgresQueryBuilder}; + /// use sea_orm::{ColumnTrait, EntityTrait, QueryTrait, tests_cfg::cake, sea_query::PostgresQueryBuilder}; /// /// assert_eq!( /// cake::Entity::find_by(11) @@ -63,7 +63,7 @@ pub trait EntityTrait: EntityName { /// ``` /// Find by composite key /// ``` - /// use sea_orm::{ColumnTrait, EntityTrait, tests_cfg::cake_filling, sea_query::PostgresQueryBuilder}; + /// use sea_orm::{ColumnTrait, EntityTrait, QueryTrait, tests_cfg::cake_filling, sea_query::PostgresQueryBuilder}; /// /// assert_eq!( /// cake_filling::Entity::find_by((2, 3)) diff --git a/src/entity/column.rs b/src/entity/column.rs index cfdb2ef6..42034342 100644 --- a/src/entity/column.rs +++ b/src/entity/column.rs @@ -57,7 +57,7 @@ pub trait ColumnTrait: IdenStatic + Iterable { bind_oper!(lte); /// ``` - /// use sea_orm::{ColumnTrait, EntityTrait, SelectHelper, tests_cfg::cake, sea_query::MysqlQueryBuilder}; + /// use sea_orm::{ColumnTrait, EntityTrait, QueryTrait, SelectHelper, tests_cfg::cake, sea_query::MysqlQueryBuilder}; /// /// assert_eq!( /// cake::Entity::find() @@ -75,7 +75,7 @@ pub trait ColumnTrait: IdenStatic + Iterable { } /// ``` - /// use sea_orm::{ColumnTrait, EntityTrait, SelectHelper, tests_cfg::cake, sea_query::MysqlQueryBuilder}; + /// use sea_orm::{ColumnTrait, EntityTrait, QueryTrait, SelectHelper, tests_cfg::cake, sea_query::MysqlQueryBuilder}; /// /// assert_eq!( /// cake::Entity::find() @@ -93,7 +93,7 @@ pub trait ColumnTrait: IdenStatic + Iterable { } /// ``` - /// use sea_orm::{ColumnTrait, EntityTrait, SelectHelper, tests_cfg::cake, sea_query::MysqlQueryBuilder}; + /// use sea_orm::{ColumnTrait, EntityTrait, QueryTrait, SelectHelper, tests_cfg::cake, sea_query::MysqlQueryBuilder}; /// /// assert_eq!( /// cake::Entity::find() @@ -108,7 +108,7 @@ pub trait ColumnTrait: IdenStatic + Iterable { } /// ``` - /// use sea_orm::{ColumnTrait, EntityTrait, SelectHelper, tests_cfg::cake, sea_query::MysqlQueryBuilder}; + /// use sea_orm::{ColumnTrait, EntityTrait, QueryTrait, SelectHelper, tests_cfg::cake, sea_query::MysqlQueryBuilder}; /// /// assert_eq!( /// cake::Entity::find() @@ -123,7 +123,7 @@ pub trait ColumnTrait: IdenStatic + Iterable { } /// ``` - /// use sea_orm::{ColumnTrait, EntityTrait, SelectHelper, tests_cfg::cake, sea_query::MysqlQueryBuilder}; + /// use sea_orm::{ColumnTrait, EntityTrait, QueryTrait, SelectHelper, tests_cfg::cake, sea_query::MysqlQueryBuilder}; /// /// assert_eq!( /// cake::Entity::find() @@ -139,7 +139,7 @@ pub trait ColumnTrait: IdenStatic + Iterable { } /// ``` - /// use sea_orm::{ColumnTrait, EntityTrait, SelectHelper, tests_cfg::cake, sea_query::MysqlQueryBuilder}; + /// use sea_orm::{ColumnTrait, EntityTrait, QueryTrait, SelectHelper, tests_cfg::cake, sea_query::MysqlQueryBuilder}; /// /// assert_eq!( /// cake::Entity::find() @@ -155,7 +155,7 @@ pub trait ColumnTrait: IdenStatic + Iterable { } /// ``` - /// use sea_orm::{ColumnTrait, EntityTrait, SelectHelper, tests_cfg::cake, sea_query::MysqlQueryBuilder}; + /// use sea_orm::{ColumnTrait, EntityTrait, QueryTrait, SelectHelper, tests_cfg::cake, sea_query::MysqlQueryBuilder}; /// /// assert_eq!( /// cake::Entity::find() diff --git a/src/query/combine.rs b/src/query/combine.rs index 287f96d8..c387193a 100644 --- a/src/query/combine.rs +++ b/src/query/combine.rs @@ -1,4 +1,4 @@ -use crate::{EntityTrait, IntoSimpleExpr, Iterable, Select, SelectTwo}; +use crate::{EntityTrait, IntoSimpleExpr, Iterable, QueryTrait, Select, SelectTwo}; use core::marker::PhantomData; pub use sea_query::JoinType; use sea_query::{Alias, ColumnRef, Iden, SelectExpr, SelectStatement, SimpleExpr}; @@ -71,7 +71,7 @@ where #[cfg(test)] mod tests { use crate::tests_cfg::{cake, fruit}; - use crate::{ColumnTrait, EntityTrait, SelectHelper}; + use crate::{ColumnTrait, EntityTrait, QueryTrait, SelectHelper}; use sea_query::MysqlQueryBuilder; #[test] diff --git a/src/query/helper.rs b/src/query/helper.rs index a10168e9..914b2adc 100644 --- a/src/query/helper.rs +++ b/src/query/helper.rs @@ -14,7 +14,7 @@ pub trait SelectHelper: Sized { /// Add a select column /// ``` - /// use sea_orm::{ColumnTrait, EntityTrait, SelectHelper, tests_cfg::cake, sea_query::PostgresQueryBuilder}; + /// use sea_orm::{ColumnTrait, EntityTrait, QueryTrait, SelectHelper, tests_cfg::cake, sea_query::PostgresQueryBuilder}; /// /// assert_eq!( /// cake::Entity::find() @@ -35,7 +35,7 @@ pub trait SelectHelper: Sized { /// Add a select column with alias /// ``` - /// use sea_orm::{ColumnTrait, EntityTrait, SelectHelper, tests_cfg::cake, sea_query::PostgresQueryBuilder}; + /// use sea_orm::{ColumnTrait, EntityTrait, QueryTrait, SelectHelper, tests_cfg::cake, sea_query::PostgresQueryBuilder}; /// /// assert_eq!( /// cake::Entity::find() @@ -59,7 +59,7 @@ pub trait SelectHelper: Sized { /// Add an AND WHERE expression /// ``` - /// use sea_orm::{ColumnTrait, EntityTrait, SelectHelper, tests_cfg::cake, sea_query::MysqlQueryBuilder}; + /// use sea_orm::{ColumnTrait, EntityTrait, QueryTrait, SelectHelper, tests_cfg::cake, sea_query::MysqlQueryBuilder}; /// /// assert_eq!( /// cake::Entity::find() @@ -73,7 +73,7 @@ pub trait SelectHelper: Sized { /// /// Add a condition tree. /// ``` - /// use sea_orm::{Condition, ColumnTrait, EntityTrait, SelectHelper, tests_cfg::cake, sea_query::MysqlQueryBuilder}; + /// use sea_orm::{Condition, ColumnTrait, EntityTrait, QueryTrait, SelectHelper, tests_cfg::cake, sea_query::MysqlQueryBuilder}; /// /// assert_eq!( /// cake::Entity::find() @@ -97,7 +97,7 @@ pub trait SelectHelper: Sized { /// Add a group by column /// ``` - /// use sea_orm::{ColumnTrait, EntityTrait, SelectHelper, tests_cfg::cake, sea_query::PostgresQueryBuilder}; + /// use sea_orm::{ColumnTrait, EntityTrait, QueryTrait, SelectHelper, tests_cfg::cake, sea_query::PostgresQueryBuilder}; /// /// assert_eq!( /// cake::Entity::find() @@ -119,7 +119,7 @@ pub trait SelectHelper: Sized { /// Add an order_by expression /// ``` - /// use sea_orm::{EntityTrait, Order, SelectHelper, tests_cfg::cake, sea_query::MysqlQueryBuilder}; + /// use sea_orm::{EntityTrait, Order, QueryTrait, SelectHelper, tests_cfg::cake, sea_query::MysqlQueryBuilder}; /// /// assert_eq!( /// cake::Entity::find() @@ -140,7 +140,7 @@ pub trait SelectHelper: Sized { /// Add an order_by expression (ascending) /// ``` - /// use sea_orm::{EntityTrait, SelectHelper, tests_cfg::cake, sea_query::MysqlQueryBuilder}; + /// use sea_orm::{EntityTrait, QueryTrait, SelectHelper, tests_cfg::cake, sea_query::MysqlQueryBuilder}; /// /// assert_eq!( /// cake::Entity::find() @@ -161,7 +161,7 @@ pub trait SelectHelper: Sized { /// Add an order_by expression (descending) /// ``` - /// use sea_orm::{EntityTrait, SelectHelper, tests_cfg::cake, sea_query::MysqlQueryBuilder}; + /// use sea_orm::{EntityTrait, QueryTrait, SelectHelper, tests_cfg::cake, sea_query::MysqlQueryBuilder}; /// /// assert_eq!( /// cake::Entity::find() diff --git a/src/query/join.rs b/src/query/join.rs index cbbc65bc..f9425394 100644 --- a/src/query/join.rs +++ b/src/query/join.rs @@ -71,7 +71,7 @@ where #[cfg(test)] mod tests { use crate::tests_cfg::{cake, filling, fruit}; - use crate::{ColumnTrait, EntityTrait, SelectHelper}; + use crate::{QueryTrait, ColumnTrait, EntityTrait, SelectHelper}; use sea_query::MysqlQueryBuilder; #[test] diff --git a/src/query/select.rs b/src/query/select.rs index 4ee721f4..c562ca24 100644 --- a/src/query/select.rs +++ b/src/query/select.rs @@ -1,8 +1,8 @@ -use crate::{ColumnTrait, EntityTrait, Iterable, SelectHelper, Statement}; +use crate::{ColumnTrait, EntityTrait, Iterable, QueryTrait, SelectHelper}; use core::fmt::Debug; use core::marker::PhantomData; pub use sea_query::JoinType; -use sea_query::{Iden, IntoColumnRef, IntoIden, QueryBuilder, SelectStatement, SimpleExpr}; +use sea_query::{Iden, IntoColumnRef, IntoIden, SelectStatement, SimpleExpr}; use std::rc::Rc; #[derive(Clone, Debug)] @@ -91,44 +91,35 @@ where } } -macro_rules! select_query { - () => { - /// Get a mutable ref to the query builder - pub fn query(&mut self) -> &mut SelectStatement { - &mut self.query - } - - /// Get an immutable ref to the query builder - pub fn as_query(&self) -> &SelectStatement { - &self.query - } - - /// Take ownership of the query builder - pub fn into_query(self) -> SelectStatement { - self.query - } - - /// Build the query as [`Statement`] - pub fn build(&self, builder: B) -> Statement - where - B: QueryBuilder, - { - self.as_query().build(builder).into() - } - }; -} - -impl Select +impl QueryTrait for Select where E: EntityTrait, { - select_query!(); + type QueryStatementBuilder = SelectStatement; + fn query(&mut self) -> &mut SelectStatement { + &mut self.query + } + fn as_query(&self) -> &SelectStatement { + &self.query + } + fn into_query(self) -> SelectStatement { + self.query + } } -impl SelectTwo +impl QueryTrait for SelectTwo where E: EntityTrait, F: EntityTrait, { - select_query!(); + type QueryStatementBuilder = SelectStatement; + fn query(&mut self) -> &mut SelectStatement { + &mut self.query + } + fn as_query(&self) -> &SelectStatement { + &self.query + } + fn into_query(self) -> SelectStatement { + self.query + } }