Skip to main content

src/gdo@error.erl

-module(gdo@error).
-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function, nowarn_nomatch, inline]).
-define(FILEPATH, "src/gdo/error.gleam").
-export([message/1, sqlstate/1, code/1, details/1]).
-export_type([error/0]).

-type error() :: {connection_error,
        binary(),
        gleam@option:option(binary()),
        gleam@option:option(binary()),
        list({binary(), binary()})} |
    {query_error,
        binary(),
        gleam@option:option(binary()),
        gleam@option:option(binary()),
        list({binary(), binary()})} |
    {transaction_error, binary()} |
    {decode_error, binary()} |
    {unsupported_feature, binary()} |
    {invalid_configuration, binary()}.

-file("src/gdo/error.gleam", 22).
-spec message(error()) -> binary().
message(Error) ->
    case Error of
        {connection_error, Message, _, _, _} ->
            Message;

        {query_error, Message@1, _, _, _} ->
            Message@1;

        {transaction_error, Message@2} ->
            Message@2;

        {decode_error, Message@3} ->
            Message@3;

        {unsupported_feature, Feature} ->
            <<"Unsupported feature: "/utf8, Feature/binary>>;

        {invalid_configuration, Message@4} ->
            Message@4
    end.

-file("src/gdo/error.gleam", 33).
-spec sqlstate(error()) -> gleam@option:option(binary()).
sqlstate(Error) ->
    case Error of
        {connection_error, _, Sqlstate, _, _} ->
            Sqlstate;

        {query_error, _, Sqlstate@1, _, _} ->
            Sqlstate@1;

        {transaction_error, _} ->
            none;

        {decode_error, _} ->
            none;

        {unsupported_feature, _} ->
            none;

        {invalid_configuration, _} ->
            none
    end.

-file("src/gdo/error.gleam", 44).
-spec code(error()) -> gleam@option:option(binary()).
code(Error) ->
    case Error of
        {connection_error, _, _, Code, _} ->
            Code;

        {query_error, _, _, Code@1, _} ->
            Code@1;

        {transaction_error, _} ->
            none;

        {decode_error, _} ->
            none;

        {unsupported_feature, _} ->
            none;

        {invalid_configuration, _} ->
            none
    end.

-file("src/gdo/error.gleam", 55).
-spec details(error()) -> list({binary(), binary()}).
details(Error) ->
    case Error of
        {connection_error, _, _, _, Details} ->
            Details;

        {query_error, _, _, _, Details@1} ->
            Details@1;

        {transaction_error, _} ->
            [];

        {decode_error, _} ->
            [];

        {unsupported_feature, _} ->
            [];

        {invalid_configuration, _} ->
            []
    end.