From ad1ce7153b05225175c0aa9504fbf6dc751d7192 Mon Sep 17 00:00:00 2001 From: Georg Semmler Date: Wed, 2 Mar 2022 15:14:05 +0100 Subject: [PATCH] Make `query_builder::nodes` private --- diesel/src/connection/mod.rs | 1 - diesel/src/internal/table_macro.rs | 4 +++ diesel/src/macros/mod.rs | 34 +++++++++---------- diesel/src/query_builder/mod.rs | 3 +- diesel/src/query_builder/nodes/mod.rs | 6 ++++ ...array_expressions_must_be_same_type.stderr | 4 +-- 6 files changed, 30 insertions(+), 22 deletions(-) diff --git a/diesel/src/connection/mod.rs b/diesel/src/connection/mod.rs index d1eb81f171dc..75423e5be1f6 100644 --- a/diesel/src/connection/mod.rs +++ b/diesel/src/connection/mod.rs @@ -98,7 +98,6 @@ pub type LoadRowIter<'conn, 'query, C, DB> = /// **It's important to use prepared statements to implement the following methods:** /// * [`Connection::load`] /// * [`Connection::execute_returning_count`] -/// * [`Connection::execute`] /// /// For performance reasons it may also be meaningful to cache already prepared statements. #[cfg_attr( diff --git a/diesel/src/internal/table_macro.rs b/diesel/src/internal/table_macro.rs index 6b319481b82b..eb0c72669034 100644 --- a/diesel/src/internal/table_macro.rs +++ b/diesel/src/internal/table_macro.rs @@ -6,6 +6,10 @@ pub use crate::pg::query_builder::only_clause::Only; #[doc(hidden)] pub use crate::query_builder::from_clause::{FromClause, NoFromClause}; #[doc(hidden)] +pub use crate::query_builder::nodes::{ + Identifier, InfixNode, StaticQueryFragment, StaticQueryFragmentInstance, +}; +#[doc(hidden)] pub use crate::query_builder::select_statement::boxed::BoxedSelectStatement; #[doc(hidden)] pub use crate::query_builder::select_statement::SelectStatement; diff --git a/diesel/src/macros/mod.rs b/diesel/src/macros/mod.rs index e94ad3ff8624..4e0f970e13c9 100644 --- a/diesel/src/macros/mod.rs +++ b/diesel/src/macros/mod.rs @@ -74,12 +74,12 @@ macro_rules! __diesel_column { impl $crate::query_builder::QueryFragment for $column_name where DB: $crate::backend::Backend, - $crate::query_builder::nodes::StaticQueryFragmentInstance: $crate::query_builder::QueryFragment, + $crate::internal::table_macro::StaticQueryFragmentInstance
: $crate::query_builder::QueryFragment, { #[allow(non_snake_case)] fn walk_ast<'b>(&'b self, mut __out: $crate::query_builder::AstPass<'_, 'b, DB>) -> $crate::result::QueryResult<()> { - const FROM_CLAUSE: $crate::query_builder::nodes::StaticQueryFragmentInstance
= $crate::query_builder::nodes::StaticQueryFragmentInstance::new(); + const FROM_CLAUSE: $crate::internal::table_macro::StaticQueryFragmentInstance
= $crate::internal::table_macro::StaticQueryFragmentInstance::new(); FROM_CLAUSE.walk_ast(__out.reborrow())?; __out.push_sql("."); @@ -753,11 +753,11 @@ macro_rules! __diesel_table_impl { pub type BoxedQuery<'a, DB, ST = SqlType> = $crate::internal::table_macro::BoxedSelectStatement<'a, ST, $crate::internal::table_macro::FromClause
, DB>; impl $crate::QuerySource for table { - type FromClause = $crate::query_builder::nodes::StaticQueryFragmentInstance
; + type FromClause = $crate::internal::table_macro::StaticQueryFragmentInstance
; type DefaultSelection = ::AllColumns; fn from_clause(&self) -> Self::FromClause { - $crate::query_builder::nodes::StaticQueryFragmentInstance::new() + $crate::internal::table_macro::StaticQueryFragmentInstance::new() } fn default_selection(&self) -> Self::DefaultSelection { @@ -768,10 +768,10 @@ macro_rules! __diesel_table_impl { impl $crate::query_builder::QueryFragment for table where DB: $crate::backend::Backend, -
::Component: $crate::query_builder::QueryFragment +
::Component: $crate::query_builder::QueryFragment { fn walk_ast<'b>(&'b self, pass: $crate::query_builder::AstPass<'_, 'b, DB>) -> $crate::result::QueryResult<()> { -
::STATIC_COMPONENT.walk_ast(pass) +
::STATIC_COMPONENT.walk_ast(pass) } } @@ -981,7 +981,7 @@ macro_rules! __diesel_table_impl { fn walk_ast<'b>(&'b self, mut __out: $crate::query_builder::AstPass<'_, 'b, DB>) -> $crate::result::QueryResult<()> { use $crate::QuerySource; - const FROM_CLAUSE: $crate::query_builder::nodes::StaticQueryFragmentInstance
= $crate::query_builder::nodes::StaticQueryFragmentInstance::new(); + const FROM_CLAUSE: $crate::internal::table_macro::StaticQueryFragmentInstance
= $crate::internal::table_macro::StaticQueryFragmentInstance::new(); FROM_CLAUSE.walk_ast(__out.reborrow())?; __out.push_sql(".*"); @@ -1061,22 +1061,22 @@ macro_rules! __diesel_valid_grouping_for_table_columns { #[doc(hidden)] macro_rules! __diesel_table_generate_static_query_fragment_for_table { (public, $table: ident, $table_name:expr) => { - impl $crate::query_builder::nodes::StaticQueryFragment for table { - type Component = $crate::query_builder::nodes::Identifier<'static>; - const STATIC_COMPONENT: &'static Self::Component = &$crate::query_builder::nodes::Identifier($table_name); + impl $crate::internal::table_macro::StaticQueryFragment for table { + type Component = $crate::internal::table_macro::Identifier<'static>; + const STATIC_COMPONENT: &'static Self::Component = &$crate::internal::table_macro::Identifier($table_name); } }; ($schema_name:ident, $table: ident, $table_name:expr) => { - impl $crate::query_builder::nodes::StaticQueryFragment for table { - type Component = $crate::query_builder::nodes::InfixNode< - $crate::query_builder::nodes::Identifier<'static>, - $crate::query_builder::nodes::Identifier<'static>, + impl $crate::internal::table_macro::StaticQueryFragment for table { + type Component = $crate::internal::table_macro::InfixNode< + $crate::internal::table_macro::Identifier<'static>, + $crate::internal::table_macro::Identifier<'static>, &'static str >; - const STATIC_COMPONENT: &'static Self::Component = &$crate::query_builder::nodes::InfixNode::new( - $crate::query_builder::nodes::Identifier(stringify!($schema_name)), - $crate::query_builder::nodes::Identifier($table_name), + const STATIC_COMPONENT: &'static Self::Component = &$crate::internal::table_macro::InfixNode::new( + $crate::internal::table_macro::Identifier(stringify!($schema_name)), + $crate::internal::table_macro::Identifier($table_name), "." ); } diff --git a/diesel/src/query_builder/mod.rs b/diesel/src/query_builder/mod.rs index 2dbd70f9a9ec..f8c8a889fa56 100644 --- a/diesel/src/query_builder/mod.rs +++ b/diesel/src/query_builder/mod.rs @@ -23,8 +23,7 @@ pub(crate) mod insert_statement; pub(crate) mod limit_clause; pub(crate) mod limit_offset_clause; pub(crate) mod locking_clause; -#[doc(hidden)] -pub mod nodes; +pub(crate) mod nodes; pub(crate) mod offset_clause; pub(crate) mod order_clause; mod returning_clause; diff --git a/diesel/src/query_builder/nodes/mod.rs b/diesel/src/query_builder/nodes/mod.rs index 6d4e5d8db7f8..71f152b8e390 100644 --- a/diesel/src/query_builder/nodes/mod.rs +++ b/diesel/src/query_builder/nodes/mod.rs @@ -3,15 +3,18 @@ use crate::query_builder::*; use crate::result::QueryResult; use std::marker::PhantomData; +#[doc(hidden)] // used by the table macro pub trait StaticQueryFragment { type Component: 'static; const STATIC_COMPONENT: &'static Self::Component; } #[derive(Debug, Copy, Clone)] +#[doc(hidden)] // used by the table macro pub struct StaticQueryFragmentInstance(PhantomData); impl StaticQueryFragmentInstance { + #[doc(hidden)] // used by the table macro pub const fn new() -> Self { Self(PhantomData) } @@ -29,6 +32,7 @@ where } #[derive(Debug, Copy, Clone)] +#[doc(hidden)] // used by the table macro pub struct Identifier<'a>(pub &'a str); impl<'a, DB: Backend> QueryFragment for Identifier<'a> { @@ -48,6 +52,7 @@ impl<'a, DB: Backend> MiddleFragment for &'a str { } #[derive(Debug, Copy, Clone)] +#[doc(hidden)] // used by the table macro pub struct InfixNode { lhs: T, rhs: U, @@ -55,6 +60,7 @@ pub struct InfixNode { } impl InfixNode { + #[doc(hidden)] // used by the table macro pub const fn new(lhs: T, rhs: U, middle: M) -> Self { InfixNode { lhs, rhs, middle } } diff --git a/diesel_compile_tests/tests/fail/array_expressions_must_be_same_type.stderr b/diesel_compile_tests/tests/fail/array_expressions_must_be_same_type.stderr index 85c211a3ecfc..d99bc6c67cc1 100644 --- a/diesel_compile_tests/tests/fail/array_expressions_must_be_same_type.stderr +++ b/diesel_compile_tests/tests/fail/array_expressions_must_be_same_type.stderr @@ -189,7 +189,7 @@ error[E0277]: the trait bound `{integer}: QueryFragment` is not satisfied <() as QueryFragment> <(T0, T1) as QueryFragment<__DB>> <(T0, T1, T2) as QueryFragment<__DB>> - and 259 others + and 260 others = note: required because of the requirements on the impl of `QueryFragment` for `({integer}, diesel::internal::derives::as_expression::Bound)` = note: 3 redundant requirements hidden = note: required because of the requirements on the impl of `QueryFragment` for `SelectStatement), diesel::sql_types::Double>>>` @@ -206,7 +206,7 @@ error[E0277]: the trait bound `{integer}: QueryId` is not satisfied <() as QueryId> <(T0, T1) as QueryId> <(T0, T1, T2) as QueryId> - and 222 others + and 223 others = note: required because of the requirements on the impl of `QueryId` for `({integer}, diesel::internal::derives::as_expression::Bound)` = note: 3 redundant requirements hidden = note: required because of the requirements on the impl of `QueryId` for `SelectStatement), diesel::sql_types::Double>>>`