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 =
read_query.OrderByDirection
pub type SelectKind =
read_query.SelectKind
pub type SelectValue =
read_query.SelectValue
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 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 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_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_kind(
select slct: Select,
kind knd: SelectKind,
) -> Select
Gets the kind of 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 SelectValue
s 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 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 joins(
select slct: Select,
joins jns: List(Join),
) -> Select
Adds Join
s to the Select
query.
pub fn limit(select slct: Select, limit lmt: Int) -> Select
Sets a Limit
in the 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_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 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 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: Select, where whr: Where) -> 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: 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 GroupBy
s.
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 Join
s of the Select
query with a signle Join
.
pub fn replace_joins(
select slct: Select,
joins jns: List(Join),
) -> Select
Replaces any Join
s of the Select
query with the given Join
s.
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 SelectValue
s to the Select
query.
If the query already has any SelectValue
s, they are replaced.
pub fn replace_selects(
select slct: Select,
select_values svs: List(SelectValue),
) -> 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: 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 SelectValue
s, the new one is appended.
pub fn selects(
select slct: Select,
select_values svs: List(SelectValue),
) -> Select
Adds many SelectValue
s to the Select
query.
If the query already has any SelectValue
s, the new ones are appended.
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 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: Select,
having whr: Where,
) -> 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: Select, where whr: Where) -> 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.