-module(gdo@row). -compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function, nowarn_nomatch, inline]). -define(FILEPATH, "src/gdo/row.gleam"). -export([new/1, columns/1, column_count/1, get/2, get_at/2]). -export_type([row/0]). -type row() :: {row, list({binary(), gdo@value:db_value()})}. -file("src/gdo/row.gleam", 10). -spec new(list({binary(), gdo@value:db_value()})) -> row(). new(Columns) -> {row, Columns}. -file("src/gdo/row.gleam", 14). -spec columns(row()) -> list({binary(), gdo@value:db_value()}). columns(Row) -> {row, Columns} = Row, Columns. -file("src/gdo/row.gleam", 19). -spec column_count(row()) -> integer(). column_count(Row) -> _pipe = Row, _pipe@1 = columns(_pipe), erlang:length(_pipe@1). -file("src/gdo/row.gleam", 23). -spec get(row(), binary()) -> {ok, gdo@value:db_value()} | {error, gdo@error:error()}. get(Row, Column_name) -> case begin _pipe = Row, _pipe@1 = columns(_pipe), _pipe@2 = maps:from_list(_pipe@1), gleam_stdlib:map_get(_pipe@2, Column_name) end of {ok, Value} -> {ok, Value}; {error, _} -> {error, {decode_error, <<"Column not found: "/utf8, Column_name/binary>>}} end. -file("src/gdo/row.gleam", 37). -spec nth(list({binary(), gdo@value:db_value()}), integer()) -> {ok, gdo@value:db_value()} | {error, gdo@error:error()}. nth(Columns, Index) -> case {Columns, Index} of {[], _} -> {error, {decode_error, <<"Column index out of bounds."/utf8>>}}; {[{_, Value} | _], 0} -> {ok, Value}; {[_ | Rest], _} -> nth(Rest, Index - 1) end. -file("src/gdo/row.gleam", 30). -spec get_at(row(), integer()) -> {ok, gdo@value:db_value()} | {error, gdo@error:error()}. get_at(Row, Index) -> case Index < 0 of true -> {error, {decode_error, <<"Column index cannot be negative."/utf8>>}}; false -> nth(columns(Row), Index) end.