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 SelectValue
s 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 anAndWhere
, the newWhere
is appended to the list withinAndWhere
. - If the query does not have a
Where
clause, the givenWhere
is set instead. - If the outermost
Where
is any other kind ofWhere
, this and the current outermostWhere
are 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 Join
s 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
Where
is anOrWhere
, the newWhere
is appended to the list withinOrWhere
. - If the query does not have a
Where
clause, the givenWhere
is set instead. - If the outermost
Where
is any other kind ofWhere
, this and the current outermostWhere
are 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
Where
is anOrWhere
, the newWhere
is appended to the list withinOrWhere
. - If the query does not have a
Where
clause, the givenWhere
is set instead. - If the outermost
Where
is any other kind ofWhere
, this and the current outermostWhere
are 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 GroupBy
s.
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 Join
s 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 Join
s of the Select
query with the given Join
s.
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 SelectValue
s to the Select
query.
If the query already has any SelectValue
s, 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 SelectValue
s, they are replaced.
pub fn replace_select_cols(
select slct: @internal Select,
select_cols scls: List(String),
) -> @internal Select
Adds many column names as SelectValue
s to the Select
query.
If the query already has any SelectValue
s, the new ones are replaced.
pub fn replace_selects(
select slct: @internal Select,
select_values svs: List(@internal SelectValue),
) -> @internal Select
Adds many SelectValue
s to the Select
query.
If the query already has any SelectValue
s, 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 SelectValue
s, 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 SelectValue
s, 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 SelectValue
s to the Select
query.
If the query already has any SelectValue
s, the new ones are appended.
pub fn selects(
select slct: @internal Select,
select_values svs: List(@internal SelectValue),
) -> @internal Select
Adds many SelectValue
s to the Select
query.
If the query already has any SelectValue
s, 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 anAndWhere
, the newWhere
is appended to the list withinAndWhere
. - If the query does not have a
Where
clause, the givenWhere
is set instead. - If the outermost
Where
is any other kind ofWhere
, this and the current outermostWhere
are 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
Where
is anXorWhere
, the newWhere
is appended to the list withinXorWhere
. - If the query does not have a
Where
clause, the givenWhere
is set instead. - If the outermost
Where
is any other kind ofWhere
, this and the current outermostWhere
are 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
Where
is anXorWhere
, the newWhere
is appended to the list withinXorWhere
. - If the query does not have a
Where
clause, the givenWhere
is set instead. - If the outermost
Where
is any other kind ofWhere
, this and the current outermostWhere
are 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.