Current section
Files
Jump to
Current section
Files
src/ormlette@templates@utils@combine.erl
-module(ormlette@templates@utils@combine).
-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function, nowarn_nomatch]).
-export([combine_tables/2, table_has_fk/1, combine/1, get_column_info/1]).
-export_type([column_info/0]).
-type column_info() :: {column_info, binary(), binary()}.
-file("/Users/ashercohen/Desktop/gleam/ormlette/src/ormlette/templates/utils/combine.gleam", 29).
-spec combine_tables(
ormlette@schema@create:table(),
ormlette@schema@create:table()
) -> ormlette@schema@create:table().
combine_tables(T1, T2) ->
T1_columns = erlang:element(3, T1),
T1_yay = gleam@list:map(
T1_columns,
fun(Col) ->
{column,
<<<<(erlang:element(2, T1))/binary, "."/utf8>>/binary,
(erlang:element(2, Col))/binary>>,
erlang:element(3, Col),
erlang:element(4, Col),
erlang:element(5, Col),
erlang:element(6, Col),
erlang:element(7, Col),
erlang:element(8, Col)}
end
),
T2_columns = erlang:element(3, T2),
T2_yay = gleam@list:map(
T2_columns,
fun(Col@1) ->
{column,
<<<<(erlang:element(2, T2))/binary, "."/utf8>>/binary,
(erlang:element(2, Col@1))/binary>>,
erlang:element(3, Col@1),
erlang:element(4, Col@1),
erlang:element(5, Col@1),
erlang:element(6, Col@1),
erlang:element(7, Col@1),
erlang:element(8, Col@1)}
end
),
{table,
<<<<(erlang:element(2, T1))/binary, "_"/utf8>>/binary,
(erlang:element(2, T2))/binary>>,
lists:append(T1_yay, T2_yay)}.
-file("/Users/ashercohen/Desktop/gleam/ormlette/src/ormlette/templates/utils/combine.gleam", 60).
-spec table_has_fk(ormlette@schema@create:table()) -> gleam@option:option(list(ormlette@schema@create:column())).
table_has_fk(Table) ->
R = gleam@list:filter(
erlang:element(3, Table),
fun(Col) -> case erlang:element(3, Col) of
foreign_key ->
true;
_ ->
false
end end
),
{some, R}.
-file("/Users/ashercohen/Desktop/gleam/ormlette/src/ormlette/templates/utils/combine.gleam", 14).
-spec combine(ormlette@schema@create:table()) -> list(ormlette@schema@create:table()).
combine(Table) ->
Values = table_has_fk(Table),
gleam@list:map(
gleam@option:unwrap(Values, []),
fun(Refs) -> combine_tables(case erlang:element(8, Refs) of
{some, R} ->
erlang:element(2, R);
none ->
erlang:error(#{gleam_error => panic,
message => <<"`panic` expression evaluated."/utf8>>,
module => <<"ormlette/templates/utils/combine"/utf8>>,
function => <<"combine"/utf8>>,
line => 22})
end, Table) end
).
-file("/Users/ashercohen/Desktop/gleam/ormlette/src/ormlette/templates/utils/combine.gleam", 71).
-spec get_column_info(ormlette@schema@create:table()) -> list(column_info()).
get_column_info(Table) ->
gleam@list:map(
erlang:element(3, Table),
fun(Col) ->
Parts = gleam@string:split(erlang:element(2, Col), <<"."/utf8>>),
Table_name = begin
_pipe = gleam@list:first(Parts),
gleam@result:unwrap(_pipe, <<""/utf8>>)
end,
Column_name = begin
_pipe@1 = gleam@list:last(Parts),
gleam@result:unwrap(_pipe@1, <<""/utf8>>)
end,
{column_info, Table_name, Column_name}
end
).