cake/select

A DSL to build SELECT queries.

Types

pub type Comment =
  @internal Comment

Defines the direction of an OrderBy.

pub type Direction {
  Asc
  Desc
}

Constructors

  • Asc
  • Desc
pub type Epilog =
  @internal Epilog
pub type Fragment =
  @internal Fragment
pub type From =
  @internal From
pub type GroupBy =
  @internal GroupBy
pub type Join =
  @internal Join
pub type Joins =
  @internal Joins
pub type Limit =
  @internal Limit
pub type Offset =
  @internal Offset
pub type OrderBy =
  @internal OrderBy
pub type OrderByDirection =
  @internal OrderByDirection
pub type ReadQuery =
  @internal ReadQuery
pub type Select =
  @internal Select
pub type SelectKind =
  @internal SelectKind
pub type SelectValue =
  @internal SelectValue
pub type Selects =
  @internal Selects
pub type Where =
  @internal Where

Values

pub fn alias(
  value vl: @internal SelectValue,
  alias als: String,
) -> @internal SelectValue

Creates an alias off a String.

pub fn all(select slct: @internal Select) -> @internal Select

Sets the kind of the Select query to return duplicates which is the default.

pub fn bool(value vl: Bool) -> @internal SelectValue

Creates a boolean Param off a Bool.

pub fn col(name nm: String) -> @internal SelectValue

Creates a column identifier off a String.

pub fn comment(
  select slct: @internal Select,
  comment cmmnt: String,
) -> @internal Select

Appends a Comment to the Select query.

pub fn distinct(
  select slct: @internal Select,
) -> @internal Select

Sets the kind of the Select query to return distinct rows only.

pub fn epilog(
  select slct: @internal Select,
  epilog eplg: String,
) -> @internal Select

Appends an Epilog to the Select query.

pub fn float(value vl: Float) -> @internal SelectValue

Creates a float Param off a Float.

pub fn fragment(
  fragment frgmt: @internal Fragment,
) -> @internal SelectValue

Creates a SelectFragment off a Fragment.

pub fn from_query(
  select slct: @internal Select,
  sub_query sb_qry: @internal ReadQuery,
  alias als: String,
) -> @internal Select

Sets the FROM clause of the Select query to an aliased sub-query.

pub fn from_table(
  select slct: @internal Select,
  name tbl_nm: String,
) -> @internal Select

Sets the FROM clause of the Select query to a table name.

pub fn get_comment(
  select slct: @internal Select,
) -> @internal Comment

Gets the Comment from the Select query.

pub fn get_epilog(
  select slct: @internal Select,
) -> @internal Epilog

Gets the Epilog from the Select query.

pub fn get_from(select slct: @internal Select) -> @internal From

Gets the FROM clause of the Select query.

pub fn get_group_by(
  select slct: @internal Select,
) -> @internal GroupBy

Gets GroupBy in the Select query.

pub fn get_having(
  select slct: @internal Select,
) -> @internal Where

GetsHAVING in the Select query.

See function having on details why this returns a Where.

pub fn get_joins(
  select slct: @internal Select,
) -> @internal Joins

Gets the Joins of the Select query.

pub fn get_kind(
  select slct: @internal Select,
  kind knd: @internal SelectKind,
) -> @internal Select

Gets the kind of the Select query.

pub fn get_limit(
  select slct: @internal Select,
) -> @internal Limit

Gets Limit in the Select query.

pub fn get_offset(
  select slct: @internal Select,
) -> @internal Offset

Gets Offset in the Select query.

pub fn get_order_by(
  select slct: @internal Select,
) -> @internal OrderBy

Gets the OrderBy from the Select query.

pub fn get_select(
  select slct: @internal Select,
) -> @internal Selects

Gets the SelectValues of the Select query.

pub fn get_where(
  select slct: @internal Select,
) -> @internal Where

Gets the Where of the Select query.

pub fn group_by(
  select slct: @internal Select,
  group_by grpb: String,
) -> @internal Select

Sets or appends GroupBy a single into an existing GroupBy.

pub fn group_bys(
  select slct: @internal Select,
  group_bys grpbs: List(String),
) -> @internal Select

Sets or appends a list of GroupBy into an existing GroupBy.

pub fn having(
  select slct: @internal Select,
  having whr: @internal Where,
) -> @internal Select

Sets an AndWhere or appends into an existing AndWhere.

  • If the outermost Where is an AndWhere, the new Where is appended to the list within AndWhere.
  • If the query does not have a Where clause, the given Where is set instead.
  • If the outermost Where is any other kind of Where, this and the current outermost Where are wrapped in an AndWhere.

NOTICE: HAVING allows to specify constraints much like WHERE, but filters the results after GROUP BY is applied instead of before. Because HAVING uses the same semantics as WHERE, it takes a Where.

pub fn int(value vl: Int) -> @internal SelectValue

Creates an integer Param off an Int.

pub fn join(
  select slct: @internal Select,
  join jn: @internal Join,
) -> @internal Select

Adds a Join to the Select query.

pub fn joins(
  select slct: @internal Select,
  joins jns: List(@internal Join),
) -> @internal Select

Adds Joins to the Select query.

pub fn limit(
  select slct: @internal Select,
  limit lmt: Int,
) -> @internal Select

Sets a Limit in the Select query.

pub fn new() -> @internal Select

Creates an empty Select query.

pub fn no_comment(
  select slct: @internal Select,
) -> @internal Select

Removes the Comment from the Select query.

pub fn no_epilog(
  select slct: @internal Select,
) -> @internal Select

Removes the Epilog from the Select query.

pub fn no_from(select slct: @internal Select) -> @internal Select

Removes the FROM clause of the Select query.

pub fn no_group_by(
  select slct: @internal Select,
) -> @internal Select

Removes GroupBy from the Select query.

pub fn no_having(
  select slct: @internal Select,
) -> @internal Select

Removes HAVING from the Select query.

pub fn no_join(select slct: @internal Select) -> @internal Select

Removes any Joins from the Select query.

pub fn no_limit(
  select slct: @internal Select,
) -> @internal Select

Removes Limit from the Select query.

pub fn no_offset(
  select slct: @internal Select,
) -> @internal Select

Removes Offset from the Select query.

pub fn no_order_by(
  select slct: @internal Select,
) -> @internal Select

Removes the OrderBy from the Select query.

pub fn no_where(
  select slct: @internal Select,
) -> @internal Select

Removes the Where from the Select query.

pub fn null() -> @internal SelectValue

Creates an SQL NULL Param.

pub fn offset(
  select slct: @internal Select,
  offset offst: Int,
) -> @internal Select

Sets an Offset in the Select query.

pub fn or_having(
  select slct: @internal Select,
  having whr: @internal Where,
) -> @internal Select

Sets an OrWhere or appends into an existing OrWhere.

  • If the outermost Where is an OrWhere, the new Where is appended to the list within OrWhere.
  • If the query does not have a Where clause, the given Where is set instead.
  • If the outermost Where is any other kind of Where, this and the current outermost Where are wrapped in an OrWhere.

See function having on details why this takes a Where.

pub fn or_where(
  select slct: @internal Select,
  where whr: @internal Where,
) -> @internal Select

Sets an OrWhere or appends into an existing OrWhere.

  • If the outermost Where is an OrWhere, the new Where is appended to the list within OrWhere.
  • If the query does not have a Where clause, the given Where is set instead.
  • If the outermost Where is any other kind of Where, this and the current outermost Where are wrapped in an OrWhere.
pub fn order_by(
  select slct: @internal Select,
  by ordb: String,
  direction dir: Direction,
) -> @internal Select

Creates or appends an OrderBy a column with a direction.

The direction can either ASC or DESC.

pub fn order_by_asc(
  select slct: @internal Select,
  by ordb: String,
) -> @internal Select

Creates or appends an ascending OrderBy.

pub fn order_by_asc_nulls_first(
  select slct: @internal Select,
  by ordb: String,
) -> @internal Select

Creates or appends an ascending OrderBy with NULLS FIRST.

NOTICE: 🦭MariaDB and 🐬MySQL do not support NULLS FIRST out of the box.

pub fn order_by_asc_nulls_last(
  select slct: @internal Select,
  by ordb: String,
) -> @internal Select

Creates or appends an ascending OrderBy with NULLS LAST.

NOTICE: 🦭MariaDB and 🐬MySQL do not support NULLS LAST out of the box.

pub fn order_by_desc(
  select slct: @internal Select,
  by ordb: String,
) -> @internal Select

Creates or appends a descending OrderBy.

pub fn order_by_desc_nulls_first(
  select slct: @internal Select,
  by ordb: String,
) -> @internal Select

Creates or appends a descending order with NULLS FIRST.

NOTICE: 🦭MariaDB and 🐬MySQL do not support NULLS FIRST out of the box.

pub fn order_by_desc_nulls_last(
  select slct: @internal Select,
  by ordb: String,
) -> @internal Select

Creates or appends a descending OrderBy with NULLS LAST.

NOTICE: 🦭MariaDB and 🐬MySQL do not support NULLS LAST out of the box.

pub fn replace_group_by(
  select slct: @internal Select,
  group_by grpb: String,
) -> @internal Select

Replaces GroupBy with a single GroupBy.

pub fn replace_group_bys(
  select slct: @internal Select,
  group_bys grpbs: List(String),
) -> @internal Select

Replaces GroupBy with a list of GroupBys.

pub fn replace_having(
  select slct: @internal Select,
  having whr: @internal Where,
) -> @internal Select

Replaces HAVING in the Select query.

See function having on details why this takes a Where.

pub fn replace_join(
  select slct: @internal Select,
  join jn: @internal Join,
) -> @internal Select

Replaces any Joins of the Select query with a signle Join.

pub fn replace_joins(
  select slct: @internal Select,
  joins jns: List(@internal Join),
) -> @internal Select

Replaces any Joins of the Select query with the given Joins.

pub fn replace_order_by(
  select slct: @internal Select,
  by ordb: String,
  direction dir: Direction,
) -> @internal Select

Replaces the OrderBy a column with a direction.

pub fn replace_order_by_asc(
  select slct: @internal Select,
  by ordb: String,
) -> @internal Select

Replaces the OrderBy a single ascending OrderBy.

pub fn replace_order_by_asc_nulls_first(
  select slct: @internal Select,
  by ordb: String,
) -> @internal Select

Replaces the OrderBy a single ascending OrderBy with NULLS FIRST.

NOTICE: 🦭MariaDB and 🐬MySQL do not support NULLS FIRST out of the box.

pub fn replace_order_by_asc_nulls_last(
  select slct: @internal Select,
  by ordb: String,
) -> @internal Select

Replaces the OrderBy a single ascending OrderBy with NULLS LAST.

NOTICE: 🦭MariaDB and 🐬MySQL do not support NULLS LAST out of the box.

pub fn replace_order_by_desc(
  select slct: @internal Select,
  by ordb: String,
) -> @internal Select

Replaces the OrderBy a single descending order.

pub fn replace_order_by_desc_nulls_first(
  select slct: @internal Select,
  by ordb: String,
) -> @internal Select

Replaces the OrderBy a single descending order with NULLS FIRST.

NOTICE: 🦭MariaDB and 🐬MySQL do not support NULLS FIRST out of the box.

pub fn replace_order_by_desc_nulls_last(
  select slct: @internal Select,
  by ordb: String,
) -> @internal Select

Replaces the OrderBy a single descending OrderBy with NULLS LAST.

NOTICE: 🦭MariaDB and 🐬MySQL do not support NULLS LAST out of the box.

pub fn replace_select(
  select slct: @internal Select,
  select_value sv: @internal SelectValue,
) -> @internal Select

Add a SelectValues to the Select query.

If the query already has any SelectValues, they are replaced.

pub fn replace_select_col(
  select slct: @internal Select,
  name nm: String,
) -> @internal Select

Add a column name to the Select query as a SelectValue.

If the query already has any SelectValues, they are replaced.

pub fn replace_select_cols(
  select slct: @internal Select,
  select_cols scls: List(String),
) -> @internal Select

Adds many column names as SelectValues to the Select query.

If the query already has any SelectValues, the new ones are replaced.

pub fn replace_selects(
  select slct: @internal Select,
  select_values svs: List(@internal SelectValue),
) -> @internal Select

Adds many SelectValues to the Select query.

If the query already has any SelectValues, they are replaced.

pub fn replace_where(
  select slct: @internal Select,
  where whr: @internal Where,
) -> @internal Select

Replaces the Where in the Select query.

pub fn select(
  select slct: @internal Select,
  select_value sv: @internal SelectValue,
) -> @internal Select

Add a SelectValue to the Select query.

If the query already has any SelectValues, the new one is appended.

pub fn select_col(
  select slct: @internal Select,
  name nm: String,
) -> @internal Select

Add a column name to the Select query as a SelectValue.

If the query already has any SelectValues, the new one is appended.

pub fn select_cols(
  select slct: @internal Select,
  select_cols scls: List(String),
) -> @internal Select

Adds many column names as SelectValues to the Select query.

If the query already has any SelectValues, the new ones are appended.

pub fn selects(
  select slct: @internal Select,
  select_values svs: List(@internal SelectValue),
) -> @internal Select

Adds many SelectValues to the Select query.

If the query already has any SelectValues, the new ones are appended.

pub fn string(value vl: String) -> @internal SelectValue

Creates a string Param off a String.

pub fn to_query(
  select slct: @internal Select,
) -> @internal ReadQuery

Creates a ReadQuery from a Select query.

pub fn where(
  select slct: @internal Select,
  where whr: @internal Where,
) -> @internal Select

Sets an AndWhere or appends into an existing AndWhere.

  • If the outermost Where is an AndWhere, the new Where is appended to the list within AndWhere.
  • If the query does not have a Where clause, the given Where is set instead.
  • If the outermost Where is any other kind of Where, this and the current outermost Where are wrapped in an AndWhere.
pub fn xor_having(
  select slct: @internal Select,
  having whr: @internal Where,
) -> @internal Select

Sets an XorWhere or appends into an existing XorWhere.

  • If the outermost Where is an XorWhere, the new Where is appended to the list within XorWhere.
  • If the query does not have a Where clause, the given Where is set instead.
  • If the outermost Where is any other kind of Where, this and the current outermost Where are wrapped in an XorWhere.

See function having on details why this takes a Where.

NOTICE: This operator does not exist in 🐘PostgreSQL or 🪶SQLite, and Cake generates equivalent SQL using OR and AND and NOT. This operator exists in 🦭MariaDB and 🐬MySQL.

pub fn xor_where(
  select slct: @internal Select,
  where whr: @internal Where,
) -> @internal Select

Sets an XorWhere or appends into an existing XorWhere.

  • If the outermost Where is an XorWhere, the new Where is appended to the list within XorWhere.
  • If the query does not have a Where clause, the given Where is set instead.
  • If the outermost Where is any other kind of Where, this and the current outermost Where are wrapped in an XorWhere.

NOTICE: This operator does not exist in 🐘PostgreSQL or 🪶SQLite, and Cake generates equivalent SQL using OR and AND and NOT. This operator exists in 🦭MariaDB and 🐬MySQL.

Search Document