drizzle_postgres/builder/cte.rs
1//! Common table expression (`WITH`) types for `PostgreSQL` queries.
2//!
3//! Build a CTE with a SELECT builder's `.into_cte::<Tag>()`, then pass it to
4//! [`QueryBuilder::with`](crate::builder::QueryBuilder::with).
5
6use crate::values::PostgresValue;
7
8/// Something that can be listed in a `PostgreSQL` `WITH` clause.
9///
10/// Implemented for every core [`CTEDefinition`](drizzle_core::cte::CTEDefinition)
11/// over [`PostgresValue`].
12pub trait CTEDefinition<'a>: drizzle_core::cte::CTEDefinition<'a, PostgresValue<'a>> {}
13
14impl<'a, T> CTEDefinition<'a> for T where T: drizzle_core::cte::CTEDefinition<'a, PostgresValue<'a>> {}
15
16/// A named `PostgreSQL` CTE that can be read like a table.
17///
18/// See [`drizzle_core::cte::CTEView`].
19pub type CTEView<'a, Table, Query> =
20 drizzle_core::cte::CTEView<'a, PostgresValue<'a>, Table, Query>;