cake/select
A DSL to build SELECT queries.
Types
Defines the direction of an OrderBy.
pub type Direction {
Asc
Desc
}
Constructors
-
Asc -
Desc
pub type OrderByDirection =
@internal OrderByDirection
pub type SelectKind =
@internal SelectKind
pub type SelectValue =
@internal SelectValue
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 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 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
Whereis anAndWhere, the newWhereis appended to the list withinAndWhere. - If the query does not have a
Whereclause, the givenWhereis set instead. - If the outermost
Whereis any other kind ofWhere, this and the current outermostWhereare wrapped in anAndWhere.
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 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 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 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
Whereis anOrWhere, the newWhereis appended to the list withinOrWhere. - If the query does not have a
Whereclause, the givenWhereis set instead. - If the outermost
Whereis any other kind ofWhere, this and the current outermostWhereare wrapped in anOrWhere.
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
Whereis anOrWhere, the newWhereis appended to the list withinOrWhere. - If the query does not have a
Whereclause, the givenWhereis set instead. - If the outermost
Whereis any other kind ofWhere, this and the current outermostWhereare wrapped in anOrWhere.
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
Whereis anAndWhere, the newWhereis appended to the list withinAndWhere. - If the query does not have a
Whereclause, the givenWhereis set instead. - If the outermost
Whereis any other kind ofWhere, this and the current outermostWhereare wrapped in anAndWhere.
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
Whereis anXorWhere, the newWhereis appended to the list withinXorWhere. - If the query does not have a
Whereclause, the givenWhereis set instead. - If the outermost
Whereis any other kind ofWhere, this and the current outermostWhereare wrapped in anXorWhere.
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
Whereis anXorWhere, the newWhereis appended to the list withinXorWhere. - If the query does not have a
Whereclause, the givenWhereis set instead. - If the outermost
Whereis any other kind ofWhere, this and the current outermostWhereare wrapped in anXorWhere.
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.