cake/select

A DSL to build SELECT queries.

Types

pub type Comment =
  read_query.Comment

Defines the direction of an OrderBy.

pub type Direction {
  Asc
  Desc
}

Constructors

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

Functions

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

Creates an alias off a String.

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

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

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

Creates a boolean Param off a Bool.

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

Creates a column identifier off a String.

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

Appends a Comment to the Select query.

pub fn distinct(select slct: Select) -> Select

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

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

Appends an Epilog to the Select query.

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

Creates a float Param off a Float.

pub fn fragment(fragment frgmt: Fragment) -> SelectValue

Creates a SelectFragment off a Fragment.

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

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

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

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

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

Gets the Comment from the Select query.

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

Gets the Epilog from the Select query.

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

Gets the FROM clause of the Select query.

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

Gets GroupBy in the Select query.

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

GetsHAVING in the Select query.

See function having on details why this returns a Where.

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

Gets the Joins of the Select query.

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

Gets the kind of the Select query.

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

Gets Limit in the Select query.

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

Gets Offset in the Select query.

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

Gets the OrderBy from the Select query.

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

Gets the SelectValues of the Select query.

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

Gets the Where of the Select query.

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

Sets or appends GroupBy a single into an existing GroupBy.

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

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

pub fn having(select slct: Select, having whr: Where) -> 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) -> SelectValue

Creates an integer Param off an Int.

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

Adds a Join to the Select query.

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

Adds Joins to the Select query.

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

Sets a Limit in the Select query.

pub fn new() -> Select

Creates an empty Select query.

pub fn no_comment(select slct: Select) -> Select

Removes the Comment from the Select query.

pub fn no_epilog(select slct: Select) -> Select

Removes the Epilog from the Select query.

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

Removes the FROM clause of the Select query.

pub fn no_group_by(select slct: Select) -> Select

Removes GroupBy from the Select query.

pub fn no_having(select slct: Select) -> Select

Removes HAVING from the Select query.

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

Removes any Joins from the Select query.

pub fn no_limit(select slct: Select) -> Select

Removes Limit from the Select query.

pub fn no_offset(select slct: Select) -> Select

Removes Offset from the Select query.

pub fn no_order_by(select slct: Select) -> Select

Removes the OrderBy from the Select query.

pub fn no_where(select slct: Select) -> Select

Removes the Where from the Select query.

pub fn null() -> SelectValue

Creates an SQL NULL Param.

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

Sets an Offset in the Select query.

pub fn or_having(
  select slct: Select,
  having whr: Where,
) -> 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: Select, where whr: Where) -> 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: Select,
  by ordb: String,
  direction dir: Direction,
) -> 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: Select,
  by ordb: String,
) -> Select

Creates or appends an ascending OrderBy.

pub fn order_by_asc_nulls_first(
  select slct: Select,
  by ordb: String,
) -> 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: Select,
  by ordb: String,
) -> 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: Select,
  by ordb: String,
) -> Select

Creates or appends a descending OrderBy.

pub fn order_by_desc_nulls_first(
  select slct: Select,
  by ordb: String,
) -> 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: Select,
  by ordb: String,
) -> 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: Select,
  group_by grpb: String,
) -> Select

Replaces GroupBy with a single GroupBy.

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

Replaces GroupBy with a list of GroupBys.

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

Replaces HAVING in the Select query.

See function having on details why this takes a Where.

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

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

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

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

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

Replaces the OrderBy a column with a direction.

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

Replaces the OrderBy a single ascending OrderBy.

pub fn replace_order_by_asc_nulls_first(
  select slct: Select,
  by ordb: String,
) -> 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: Select,
  by ordb: String,
) -> 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: Select,
  by ordb: String,
) -> Select

Replaces the OrderBy a single descending order.

pub fn replace_order_by_desc_nulls_first(
  select slct: Select,
  by ordb: String,
) -> 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: Select,
  by ordb: String,
) -> 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: Select,
  select_value sv: SelectValue,
) -> Select

Add a SelectValues to the Select query.

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

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

Adds many SelectValues to the Select query.

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

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

Replaces the Where in the Select query.

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

Add a SelectValue to the Select query.

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

pub fn selects(
  select slct: Select,
  select_values svs: List(SelectValue),
) -> 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) -> SelectValue

Creates a string Param off a String.

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

Creates a ReadQuery from a Select query.

pub fn where(select slct: Select, where whr: Where) -> 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: Select,
  having whr: Where,
) -> 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: Select, where whr: Where) -> 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