-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 ).