Skip to main content

src/gdo@decode.erl

-module(gdo@decode).
-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function, nowarn_nomatch, inline]).
-define(FILEPATH, "src/gdo/decode.gleam").
-export([decode/2, succeed/1, map/2, map2/3, map3/4, column/2, column_at/2, nullable/1, int/0, float/0, bool/0, string/0, bytes/0]).

-file("src/gdo/decode.gleam", 12).
-spec decode(
    gdo@row:row(),
    fun((gdo@row:row()) -> {ok, KTH} | {error, gdo@error:error()})
) -> {ok, KTH} | {error, gdo@error:error()}.
decode(Current_row, Decoder) ->
    Decoder(Current_row).

-file("src/gdo/decode.gleam", 19).
-spec succeed(KTL) -> fun((gdo@row:row()) -> {ok, KTL} |
    {error, gdo@error:error()}).
succeed(Value) ->
    fun(_) -> {ok, Value} end.

-file("src/gdo/decode.gleam", 23).
-spec map(
    fun((gdo@row:row()) -> {ok, KTN} | {error, gdo@error:error()}),
    fun((KTN) -> KTP)
) -> fun((gdo@row:row()) -> {ok, KTP} | {error, gdo@error:error()}).
map(Decoder, Transform) ->
    fun(Current_row) -> case Decoder(Current_row) of
            {ok, Decoded} ->
                {ok, Transform(Decoded)};

            {error, Error} ->
                {error, Error}
        end end.

-file("src/gdo/decode.gleam", 32).
-spec map2(
    fun((gdo@row:row()) -> {ok, KTR} | {error, gdo@error:error()}),
    fun((gdo@row:row()) -> {ok, KTT} | {error, gdo@error:error()}),
    fun((KTR, KTT) -> KTV)
) -> fun((gdo@row:row()) -> {ok, KTV} | {error, gdo@error:error()}).
map2(Decoder1, Decoder2, Combine) ->
    fun(Current_row) -> case Decoder1(Current_row) of
            {ok, Value1} ->
                case Decoder2(Current_row) of
                    {ok, Value2} ->
                        {ok, Combine(Value1, Value2)};

                    {error, Error} ->
                        {error, Error}
                end;

            {error, Error@1} ->
                {error, Error@1}
        end end.

-file("src/gdo/decode.gleam", 49).
-spec map3(
    fun((gdo@row:row()) -> {ok, KTX} | {error, gdo@error:error()}),
    fun((gdo@row:row()) -> {ok, KTZ} | {error, gdo@error:error()}),
    fun((gdo@row:row()) -> {ok, KUB} | {error, gdo@error:error()}),
    fun((KTX, KTZ, KUB) -> KUD)
) -> fun((gdo@row:row()) -> {ok, KUD} | {error, gdo@error:error()}).
map3(Decoder1, Decoder2, Decoder3, Combine) ->
    fun(Current_row) -> case Decoder1(Current_row) of
            {ok, Value1} ->
                case Decoder2(Current_row) of
                    {ok, Value2} ->
                        case Decoder3(Current_row) of
                            {ok, Value3} ->
                                {ok, Combine(Value1, Value2, Value3)};

                            {error, Error} ->
                                {error, Error}
                        end;

                    {error, Error@1} ->
                        {error, Error@1}
                end;

            {error, Error@2} ->
                {error, Error@2}
        end end.

-file("src/gdo/decode.gleam", 71).
-spec column(
    binary(),
    fun((gdo@value:db_value()) -> {ok, KUF} | {error, gdo@error:error()})
) -> fun((gdo@row:row()) -> {ok, KUF} | {error, gdo@error:error()}).
column(Name, Value_decoder) ->
    fun(Current_row) -> case gdo@row:get(Current_row, Name) of
            {ok, Current_value} ->
                Value_decoder(Current_value);

            {error, Error} ->
                {error, Error}
        end end.

-file("src/gdo/decode.gleam", 83).
-spec column_at(
    integer(),
    fun((gdo@value:db_value()) -> {ok, KUI} | {error, gdo@error:error()})
) -> fun((gdo@row:row()) -> {ok, KUI} | {error, gdo@error:error()}).
column_at(Index, Value_decoder) ->
    fun(Current_row) -> case gdo@row:get_at(Current_row, Index) of
            {ok, Current_value} ->
                Value_decoder(Current_value);

            {error, Error} ->
                {error, Error}
        end end.

-file("src/gdo/decode.gleam", 95).
-spec nullable(
    fun((gdo@value:db_value()) -> {ok, KUL} | {error, gdo@error:error()})
) -> fun((gdo@value:db_value()) -> {ok, gleam@option:option(KUL)} |
    {error, gdo@error:error()}).
nullable(Value_decoder) ->
    fun(Current_value) -> case Current_value of
            null ->
                {ok, none};

            _ ->
                case Value_decoder(Current_value) of
                    {ok, Decoded} ->
                        {ok, {some, Decoded}};

                    {error, Error} ->
                        {error, Error}
                end
        end end.

-file("src/gdo/decode.gleam", 153).
-spec type_error(binary(), gdo@value:db_value()) -> gdo@error:error().
type_error(Expected, Current_value) ->
    {decode_error,
        <<<<<<"Expected "/utf8, Expected/binary>>/binary, " but found "/utf8>>/binary,
            (gdo@value:type_name(Current_value))/binary>>}.

-file("src/gdo/decode.gleam", 108).
-spec int() -> fun((gdo@value:db_value()) -> {ok, integer()} |
    {error, gdo@error:error()}).
int() ->
    fun(Current_value) -> case Current_value of
            {int, Inner} ->
                {ok, Inner};

            _ ->
                {error, type_error(<<"int"/utf8>>, Current_value)}
        end end.

-file("src/gdo/decode.gleam", 117).
-spec float() -> fun((gdo@value:db_value()) -> {ok, float()} |
    {error, gdo@error:error()}).
float() ->
    fun(Current_value) -> case Current_value of
            {float, Inner} ->
                {ok, Inner};

            _ ->
                {error, type_error(<<"float"/utf8>>, Current_value)}
        end end.

-file("src/gdo/decode.gleam", 126).
-spec bool() -> fun((gdo@value:db_value()) -> {ok, boolean()} |
    {error, gdo@error:error()}).
bool() ->
    fun(Current_value) -> case Current_value of
            {bool, Inner} ->
                {ok, Inner};

            _ ->
                {error, type_error(<<"bool"/utf8>>, Current_value)}
        end end.

-file("src/gdo/decode.gleam", 135).
-spec string() -> fun((gdo@value:db_value()) -> {ok, binary()} |
    {error, gdo@error:error()}).
string() ->
    fun(Current_value) -> case Current_value of
            {string, Inner} ->
                {ok, Inner};

            _ ->
                {error, type_error(<<"string"/utf8>>, Current_value)}
        end end.

-file("src/gdo/decode.gleam", 144).
-spec bytes() -> fun((gdo@value:db_value()) -> {ok, bitstring()} |
    {error, gdo@error:error()}).
bytes() ->
    fun(Current_value) -> case Current_value of
            {bytes, Inner} ->
                {ok, Inner};

            _ ->
                {error, type_error(<<"bytes"/utf8>>, Current_value)}
        end end.