-module(cake@combined). -compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function, nowarn_nomatch]). -define(FILEPATH, "src/cake/combined.gleam"). -export([to_query/1, union/2, unions/3, union_all/2, unions_all/3, except/2, excepts/3, except_all/2, excepts_all/3, intersect/2, intersects/3, intersect_all/2, intersects_all/3, get_queries/1, limit/2, no_limit/1, get_limit/1, offset/2, no_offset/1, get_offset/1, order_by_asc/2, order_by_asc_nulls_first/2, order_by_asc_nulls_last/2, replace_order_by_asc/2, replace_order_by_asc_nulls_first/2, replace_order_by_asc_nulls_last/2, order_by_desc/2, order_by_desc_nulls_first/2, order_by_desc_nulls_last/2, replace_order_by_desc/2, replace_order_by_desc_nulls_first/2, replace_order_by_desc_nulls_last/2, order_by/3, replace_order_by/3, no_order_by/1, get_order_by/1, epilog/2, no_epilog/1, get_epilog/1, comment/2, no_comment/1, get_comment/1]). -export_type([direction/0]). -if(?OTP_RELEASE >= 27). -define(MODULEDOC(Str), -moduledoc(Str)). -define(DOC(Str), -doc(Str)). -else. -define(MODULEDOC(Str), -compile([])). -define(DOC(Str), -compile([])). -endif. ?MODULEDOC( " A DSL to build combined queries, such as:\n" "\n" " - `UNION`\n" " - `UNION ALL`\n" " - `EXCEPT`\n" " - `EXCEPT ALL`\n" " - `INTERSECT`\n" " - `INTERSECT ALL`\n" "\n" " ## Compatibility\n" "\n" " - 🪶SQLite does not support `EXCEPT ALL` and `INTERSECT ALL`.\n" "\n" ). -type direction() :: asc | desc. -file("src/cake/combined.gleam", 55). ?DOC(" Creates a `ReadQuery` from a `Combined` read_query.\n"). -spec to_query(cake@internal@read_query:combined()) -> cake@internal@read_query:read_query(). to_query(Cmbnd) -> _pipe = Cmbnd, {combined_query, _pipe}. -file("src/cake/combined.gleam", 63). ?DOC(" Creates a `UNION` query out of two queries as a `Combined` `ReadQuery`.\n"). -spec union( cake@internal@read_query:select(), cake@internal@read_query:select() ) -> cake@internal@read_query:combined(). union(Qry_a, Qry_b) -> _pipe = union_distinct, cake@internal@read_query:combined_query_new(_pipe, [Qry_a, Qry_b]). -file("src/cake/combined.gleam", 70). ?DOC( " Creates a `UNION` query out of two or more queries as a `Combined`\n" " `ReadQuery`.\n" ). -spec unions( cake@internal@read_query:select(), cake@internal@read_query:select(), list(cake@internal@read_query:select()) ) -> cake@internal@read_query:combined(). unions(Qry_a, Qry_b, Mr_qrys) -> _pipe = union_distinct, cake@internal@read_query:combined_query_new(_pipe, [Qry_a, Qry_b | Mr_qrys]). -file("src/cake/combined.gleam", 80). ?DOC(" Creates a `UNION ALL` query out of two queries as a `Combined` `ReadQuery`.\n"). -spec union_all( cake@internal@read_query:select(), cake@internal@read_query:select() ) -> cake@internal@read_query:combined(). union_all(Qry_a, Qry_b) -> _pipe = union_all, cake@internal@read_query:combined_query_new(_pipe, [Qry_a, Qry_b]). -file("src/cake/combined.gleam", 89). ?DOC( " Creates a `UNION ALL` query out of two or more queries as a `Combined`\n" " `ReadQuery`.\n" "\n" " NOTICE: Not supported by 🪶SQLite.\n" ). -spec unions_all( cake@internal@read_query:select(), cake@internal@read_query:select(), list(cake@internal@read_query:select()) ) -> cake@internal@read_query:combined(). unions_all(Qry_a, Qry_b, Mr_qrys) -> _pipe = union_all, cake@internal@read_query:combined_query_new(_pipe, [Qry_a, Qry_b | Mr_qrys]). -file("src/cake/combined.gleam", 99). ?DOC(" Creates an `EXCEPT` query out of two queries as a `Combined` `ReadQuery`.\n"). -spec except( cake@internal@read_query:select(), cake@internal@read_query:select() ) -> cake@internal@read_query:combined(). except(Qry_a, Qry_b) -> _pipe = except_distinct, cake@internal@read_query:combined_query_new(_pipe, [Qry_a, Qry_b]). -file("src/cake/combined.gleam", 106). ?DOC( " Creates an `EXCEPT` query out of two or more queries as a `Combined`\n" " `ReadQuery`.\n" ). -spec excepts( cake@internal@read_query:select(), cake@internal@read_query:select(), list(cake@internal@read_query:select()) ) -> cake@internal@read_query:combined(). excepts(Qry_a, Qry_b, Mr_qrys) -> _pipe = except_distinct, cake@internal@read_query:combined_query_new(_pipe, [Qry_a, Qry_b | Mr_qrys]). -file("src/cake/combined.gleam", 119). ?DOC( " Creates an `EXCEPT ALL` query out of two queries as a `Combined`\n" " `ReadQuery`.\n" "\n" " NOTICE: Not supported by 🪶SQLite.\n" ). -spec except_all( cake@internal@read_query:select(), cake@internal@read_query:select() ) -> cake@internal@read_query:combined(). except_all(Qry_a, Qry_b) -> _pipe = except_all, cake@internal@read_query:combined_query_new(_pipe, [Qry_a, Qry_b]). -file("src/cake/combined.gleam", 128). ?DOC( " Creates an `EXCEPT ALL` query out of two or more queries as a `Combined`\n" " `ReadQuery`.\n" "\n" " NOTICE: Not supported by 🪶SQLite.\n" ). -spec excepts_all( cake@internal@read_query:select(), cake@internal@read_query:select(), list(cake@internal@read_query:select()) ) -> cake@internal@read_query:combined(). excepts_all(Qry_a, Qry_b, Mr_qrys) -> _pipe = except_all, cake@internal@read_query:combined_query_new(_pipe, [Qry_a, Qry_b | Mr_qrys]). -file("src/cake/combined.gleam", 138). ?DOC(" Creates an `INTERSECT` query out of two queries as a `Combined` `ReadQuery`.\n"). -spec intersect( cake@internal@read_query:select(), cake@internal@read_query:select() ) -> cake@internal@read_query:combined(). intersect(Qry_a, Qry_b) -> _pipe = intersect_distinct, cake@internal@read_query:combined_query_new(_pipe, [Qry_a, Qry_b]). -file("src/cake/combined.gleam", 145). ?DOC( " Creates an `INTERSECT` query out of two or more queries as a `Combined`\n" " read_query.\n" ). -spec intersects( cake@internal@read_query:select(), cake@internal@read_query:select(), list(cake@internal@read_query:select()) ) -> cake@internal@read_query:combined(). intersects(Qry_a, Qry_b, Mr_qrys) -> _pipe = intersect_distinct, cake@internal@read_query:combined_query_new(_pipe, [Qry_a, Qry_b | Mr_qrys]). -file("src/cake/combined.gleam", 158). ?DOC( " Creates an `INTERSECT ALL` query out of two queries as a `Combined`\n" " `ReadQuery`.\n" "\n" " NOTICE: Not supported by 🪶SQLite.\n" ). -spec intersect_all( cake@internal@read_query:select(), cake@internal@read_query:select() ) -> cake@internal@read_query:combined(). intersect_all(Qry_a, Qry_b) -> _pipe = intersect_all, cake@internal@read_query:combined_query_new(_pipe, [Qry_a, Qry_b]). -file("src/cake/combined.gleam", 167). ?DOC( " Creates an `INTERSECT ALL` query out of two or more queries as a `Combined`\n" " `ReadQuery`.\n" "\n" " NOTICE: Not supported by 🪶SQLite.\n" ). -spec intersects_all( cake@internal@read_query:select(), cake@internal@read_query:select(), list(cake@internal@read_query:select()) ) -> cake@internal@read_query:combined(). intersects_all(Qry_a, Qry_b, Mr_qrys) -> _pipe = intersect_all, cake@internal@read_query:combined_query_new(_pipe, [Qry_a, Qry_b | Mr_qrys]). -file("src/cake/combined.gleam", 177). ?DOC(" Gets the queries from a `Combined` `ReadQuery`.\n"). -spec get_queries(cake@internal@read_query:combined()) -> list(cake@internal@read_query:select()). get_queries(Cmbnd) -> erlang:element(3, Cmbnd). -file("src/cake/combined.gleam", 185). ?DOC(" Sets a `Limit` in the `Combined` `ReadQuery`.\n"). -spec limit(cake@internal@read_query:combined(), integer()) -> cake@internal@read_query:combined(). limit(Qry, Lmt) -> Lmt@1 = begin _pipe = Lmt, cake@internal@read_query:limit_new(_pipe) end, _record = Qry, {combined, erlang:element(2, _record), erlang:element(3, _record), Lmt@1, erlang:element(5, _record), erlang:element(6, _record), erlang:element(7, _record), erlang:element(8, _record)}. -file("src/cake/combined.gleam", 192). ?DOC(" Removes `Limit` from the `Combined` `ReadQuery`.\n"). -spec no_limit(cake@internal@read_query:combined()) -> cake@internal@read_query:combined(). no_limit(Qry) -> _record = Qry, {combined, erlang:element(2, _record), erlang:element(3, _record), no_limit, erlang:element(5, _record), erlang:element(6, _record), erlang:element(7, _record), erlang:element(8, _record)}. -file("src/cake/combined.gleam", 198). ?DOC(" Gets `Limit` in the `Combined` `ReadQuery`.\n"). -spec get_limit(cake@internal@read_query:combined()) -> cake@internal@read_query:limit(). get_limit(Qry) -> erlang:element(4, Qry). -file("src/cake/combined.gleam", 204). ?DOC(" Sets an `Offset` in the `Combined` `ReadQuery`.\n"). -spec offset(cake@internal@read_query:combined(), integer()) -> cake@internal@read_query:combined(). offset(Qry, Offst) -> Offst@1 = begin _pipe = Offst, cake@internal@read_query:offset_new(_pipe) end, _record = Qry, {combined, erlang:element(2, _record), erlang:element(3, _record), erlang:element(4, _record), Offst@1, erlang:element(6, _record), erlang:element(7, _record), erlang:element(8, _record)}. -file("src/cake/combined.gleam", 211). ?DOC(" Removes `Offset` from the `Combined` `ReadQuery`.\n"). -spec no_offset(cake@internal@read_query:combined()) -> cake@internal@read_query:combined(). no_offset(Qry) -> _record = Qry, {combined, erlang:element(2, _record), erlang:element(3, _record), erlang:element(4, _record), no_offset, erlang:element(6, _record), erlang:element(7, _record), erlang:element(8, _record)}. -file("src/cake/combined.gleam", 217). ?DOC(" Gets `Offset` in the `Combined` `ReadQuery`.\n"). -spec get_offset(cake@internal@read_query:combined()) -> cake@internal@read_query:offset(). get_offset(Qry) -> erlang:element(5, Qry). -file("src/cake/combined.gleam", 230). -spec map_order_by_direction_constructor(direction()) -> cake@internal@read_query:order_by_direction(). map_order_by_direction_constructor(In) -> case In of asc -> asc; desc -> desc end. -file("src/cake/combined.gleam", 239). ?DOC(" Creates or appends an ascending `OrderBy`.\n"). -spec order_by_asc(cake@internal@read_query:combined(), binary()) -> cake@internal@read_query:combined(). order_by_asc(Qry, Ordb) -> _pipe = Qry, cake@internal@read_query:combined_order_by( _pipe, begin _pipe@2 = [begin _pipe@1 = Ordb, {order_by_column, _pipe@1, asc} end], {order_by, _pipe@2} end, true ). -file("src/cake/combined.gleam", 251). ?DOC( " Creates or appends an ascending `OrderBy` with `NULLS FIRST`.\n" "\n" " NOTICE: 🦭MariaDB and 🐬MySQL do not support `NULLS FIRST` out of the box.\n" ). -spec order_by_asc_nulls_first(cake@internal@read_query:combined(), binary()) -> cake@internal@read_query:combined(). order_by_asc_nulls_first(Qry, Ordb) -> _pipe = Qry, cake@internal@read_query:combined_order_by( _pipe, begin _pipe@2 = [begin _pipe@1 = Ordb, {order_by_column, _pipe@1, asc_nulls_first} end], {order_by, _pipe@2} end, true ). -file("src/cake/combined.gleam", 266). ?DOC( " Creates or appends an ascending `OrderBy` with `NULLS LAST`.\n" "\n" " NOTICE: 🦭MariaDB and 🐬MySQL do not support `NULLS LAST` out of the box.\n" ). -spec order_by_asc_nulls_last(cake@internal@read_query:combined(), binary()) -> cake@internal@read_query:combined(). order_by_asc_nulls_last(Qry, Ordb) -> _pipe = Qry, cake@internal@read_query:combined_order_by( _pipe, begin _pipe@2 = [begin _pipe@1 = Ordb, {order_by_column, _pipe@1, asc_nulls_first} end], {order_by, _pipe@2} end, true ). -file("src/cake/combined.gleam", 276). ?DOC(" Replaces the `OrderBy` a single ascending `OrderBy`.\n"). -spec replace_order_by_asc(cake@internal@read_query:combined(), binary()) -> cake@internal@read_query:combined(). replace_order_by_asc(Qry, Ordb) -> _pipe = Qry, cake@internal@read_query:combined_order_by( _pipe, begin _pipe@2 = [begin _pipe@1 = Ordb, {order_by_column, _pipe@1, asc} end], {order_by, _pipe@2} end, false ). -file("src/cake/combined.gleam", 288). ?DOC( " Replaces the `OrderBy` a single ascending `OrderBy` with `NULLS FIRST`.\n" "\n" " NOTICE: 🦭MariaDB and 🐬MySQL do not support `NULLS FIRST` out of the box.\n" ). -spec replace_order_by_asc_nulls_first( cake@internal@read_query:combined(), binary() ) -> cake@internal@read_query:combined(). replace_order_by_asc_nulls_first(Qry, Ordb) -> _pipe = Qry, cake@internal@read_query:combined_order_by( _pipe, begin _pipe@2 = [begin _pipe@1 = Ordb, {order_by_column, _pipe@1, asc_nulls_first} end], {order_by, _pipe@2} end, false ). -file("src/cake/combined.gleam", 303). ?DOC( " Replaces the `OrderBy` a single ascending `OrderBy` with `NULLS LAST`.\n" "\n" " NOTICE: 🦭MariaDB and 🐬MySQL do not support `NULLS LAST` out of the box.\n" ). -spec replace_order_by_asc_nulls_last( cake@internal@read_query:combined(), binary() ) -> cake@internal@read_query:combined(). replace_order_by_asc_nulls_last(Qry, Ordb) -> _pipe = Qry, cake@internal@read_query:combined_order_by( _pipe, begin _pipe@2 = [begin _pipe@1 = Ordb, {order_by_column, _pipe@1, asc_nulls_first} end], {order_by, _pipe@2} end, false ). -file("src/cake/combined.gleam", 316). ?DOC(" Creates or appends a descending `OrderBy`.\n"). -spec order_by_desc(cake@internal@read_query:combined(), binary()) -> cake@internal@read_query:combined(). order_by_desc(Qry, Ordb) -> _pipe = Qry, cake@internal@read_query:combined_order_by( _pipe, begin _pipe@2 = [begin _pipe@1 = Ordb, {order_by_column, _pipe@1, desc} end], {order_by, _pipe@2} end, true ). -file("src/cake/combined.gleam", 328). ?DOC( " Creates or appends a descending order with `NULLS FIRST`.\n" "\n" " NOTICE: 🦭MariaDB and 🐬MySQL do not support `NULLS FIRST` out of the box.\n" ). -spec order_by_desc_nulls_first(cake@internal@read_query:combined(), binary()) -> cake@internal@read_query:combined(). order_by_desc_nulls_first(Qry, Ordb) -> _pipe = Qry, cake@internal@read_query:combined_order_by( _pipe, begin _pipe@2 = [begin _pipe@1 = Ordb, {order_by_column, _pipe@1, desc_nulls_first} end], {order_by, _pipe@2} end, true ). -file("src/cake/combined.gleam", 343). ?DOC( " Creates or appends a descending `OrderBy` with `NULLS LAST`.\n" "\n" " NOTICE: 🦭MariaDB and 🐬MySQL do not support `NULLS LAST` out of the box.\n" ). -spec order_by_desc_nulls_last(cake@internal@read_query:combined(), binary()) -> cake@internal@read_query:combined(). order_by_desc_nulls_last(Qry, Ordb) -> _pipe = Qry, cake@internal@read_query:combined_order_by( _pipe, begin _pipe@2 = [begin _pipe@1 = Ordb, {order_by_column, _pipe@1, desc_nulls_first} end], {order_by, _pipe@2} end, true ). -file("src/cake/combined.gleam", 356). ?DOC(" Replaces the `OrderBy` a single descending order.\n"). -spec replace_order_by_desc(cake@internal@read_query:combined(), binary()) -> cake@internal@read_query:combined(). replace_order_by_desc(Qry, Ordb) -> _pipe = Qry, cake@internal@read_query:combined_order_by( _pipe, begin _pipe@2 = [begin _pipe@1 = Ordb, {order_by_column, _pipe@1, desc} end], {order_by, _pipe@2} end, false ). -file("src/cake/combined.gleam", 368). ?DOC( " Replaces the `OrderBy` a single descending order with `NULLS FIRST`.\n" "\n" " NOTICE: 🦭MariaDB and 🐬MySQL do not support `NULLS FIRST` out of the box.\n" ). -spec replace_order_by_desc_nulls_first( cake@internal@read_query:combined(), binary() ) -> cake@internal@read_query:combined(). replace_order_by_desc_nulls_first(Qry, Ordb) -> _pipe = Qry, cake@internal@read_query:combined_order_by( _pipe, begin _pipe@2 = [begin _pipe@1 = Ordb, {order_by_column, _pipe@1, desc_nulls_first} end], {order_by, _pipe@2} end, false ). -file("src/cake/combined.gleam", 383). ?DOC( " Replaces the `OrderBy` a single descending `OrderBy` with `NULLS LAST`.\n" "\n" " NOTICE: 🦭MariaDB and 🐬MySQL do not support `NULLS LAST` out of the box.\n" ). -spec replace_order_by_desc_nulls_last( cake@internal@read_query:combined(), binary() ) -> cake@internal@read_query:combined(). replace_order_by_desc_nulls_last(Qry, Ordb) -> _pipe = Qry, cake@internal@read_query:combined_order_by( _pipe, begin _pipe@2 = [begin _pipe@1 = Ordb, {order_by_column, _pipe@1, desc_nulls_first} end], {order_by, _pipe@2} end, false ). -file("src/cake/combined.gleam", 398). ?DOC( " Creates or appends an `OrderBy` a column with a direction.\n" "\n" " The direction can either `ASC` or `DESC`.\n" ). -spec order_by(cake@internal@read_query:combined(), binary(), direction()) -> cake@internal@read_query:combined(). order_by(Qry, Ordb, Dir) -> Dir@1 = begin _pipe = Dir, map_order_by_direction_constructor(_pipe) end, _pipe@1 = Qry, cake@internal@read_query:combined_order_by( _pipe@1, begin _pipe@3 = [begin _pipe@2 = Ordb, {order_by_column, _pipe@2, Dir@1} end], {order_by, _pipe@3} end, true ). -file("src/cake/combined.gleam", 413). ?DOC(" Replaces the `OrderBy` a column with a direction.\n"). -spec replace_order_by( cake@internal@read_query:combined(), binary(), direction() ) -> cake@internal@read_query:combined(). replace_order_by(Qry, Ordb, Dir) -> Dir@1 = begin _pipe = Dir, map_order_by_direction_constructor(_pipe) end, _pipe@1 = Qry, cake@internal@read_query:combined_order_by( _pipe@1, begin _pipe@3 = [begin _pipe@2 = Ordb, {order_by_column, _pipe@2, Dir@1} end], {order_by, _pipe@3} end, false ). -file("src/cake/combined.gleam", 428). ?DOC(" Removes the `OrderBy` from the `Combined` read_query.\n"). -spec no_order_by(cake@internal@read_query:combined()) -> cake@internal@read_query:combined(). no_order_by(Qry) -> _record = Qry, {combined, erlang:element(2, _record), erlang:element(3, _record), erlang:element(4, _record), erlang:element(5, _record), no_order_by, erlang:element(7, _record), erlang:element(8, _record)}. -file("src/cake/combined.gleam", 434). ?DOC(" Gets the `OrderBy` from the `Combined` read_query.\n"). -spec get_order_by(cake@internal@read_query:combined()) -> cake@internal@read_query:order_by(). get_order_by(Qry) -> erlang:element(6, Qry). -file("src/cake/combined.gleam", 442). ?DOC(" Appends an `Epilog` to the `Combined` read_query.\n"). -spec epilog(cake@internal@read_query:combined(), binary()) -> cake@internal@read_query:combined(). epilog(Qry, Eplg) -> Eplg@1 = begin _pipe = Eplg, gleam@string:trim(_pipe) end, case Eplg@1 of <<""/utf8>> -> _record = Qry, {combined, erlang:element(2, _record), erlang:element(3, _record), erlang:element(4, _record), erlang:element(5, _record), erlang:element(6, _record), no_epilog, erlang:element(8, _record)}; _ -> _record@1 = Qry, {combined, erlang:element(2, _record@1), erlang:element(3, _record@1), erlang:element(4, _record@1), erlang:element(5, _record@1), erlang:element(6, _record@1), begin _pipe@1 = (<<" "/utf8, Eplg@1/binary>>), {epilog, _pipe@1} end, erlang:element(8, _record@1)} end. -file("src/cake/combined.gleam", 452). ?DOC(" Removes the `Epilog` from the `Combined` read_query.\n"). -spec no_epilog(cake@internal@read_query:combined()) -> cake@internal@read_query:combined(). no_epilog(Qry) -> _record = Qry, {combined, erlang:element(2, _record), erlang:element(3, _record), erlang:element(4, _record), erlang:element(5, _record), erlang:element(6, _record), no_epilog, erlang:element(8, _record)}. -file("src/cake/combined.gleam", 458). ?DOC(" Gets the `Epilog` from the `Combined` read_query.\n"). -spec get_epilog(cake@internal@read_query:combined()) -> cake@internal@read_query:epilog(). get_epilog(Qry) -> erlang:element(7, Qry). -file("src/cake/combined.gleam", 466). ?DOC(" Appends a `Comment` to the `Combined` read_query.\n"). -spec comment(cake@internal@read_query:combined(), binary()) -> cake@internal@read_query:combined(). comment(Qry, Cmmnt) -> Cmmnt@1 = begin _pipe = Cmmnt, gleam@string:trim(_pipe) end, case Cmmnt@1 of <<""/utf8>> -> _record = Qry, {combined, erlang:element(2, _record), erlang:element(3, _record), erlang:element(4, _record), erlang:element(5, _record), erlang:element(6, _record), erlang:element(7, _record), no_comment}; _ -> _record@1 = Qry, {combined, erlang:element(2, _record@1), erlang:element(3, _record@1), erlang:element(4, _record@1), erlang:element(5, _record@1), erlang:element(6, _record@1), erlang:element(7, _record@1), begin _pipe@1 = (<<" "/utf8, Cmmnt@1/binary>>), {comment, _pipe@1} end} end. -file("src/cake/combined.gleam", 476). ?DOC(" Removes the `Comment` from the `Combined` read_query.\n"). -spec no_comment(cake@internal@read_query:combined()) -> cake@internal@read_query:combined(). no_comment(Qry) -> _record = Qry, {combined, erlang:element(2, _record), erlang:element(3, _record), erlang:element(4, _record), erlang:element(5, _record), erlang:element(6, _record), erlang:element(7, _record), no_comment}. -file("src/cake/combined.gleam", 482). ?DOC(" Gets the `Comment` from the `Combined` read_query.\n"). -spec get_comment(cake@internal@read_query:combined()) -> cake@internal@read_query:comment(). get_comment(Qry) -> erlang:element(8, Qry).