-module(postgleam@error). -compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function, nowarn_nomatch, inline]). -define(FILEPATH, "src/postgleam/error.gleam"). -export([parse_error_fields/1]). -export_type([pg_error_fields/0, error/0]). -if(?OTP_RELEASE >= 27). -define(MODULEDOC(Str), -moduledoc(Str)). -define(DOC(Str), -doc(Str)). -else. -define(MODULEDOC(Str), -compile([])). -define(DOC(Str), -compile([])). -endif. -type pg_error_fields() :: {pg_error_fields, binary(), binary(), binary(), gleam@option:option(binary()), gleam@option:option(binary()), gleam@option:option(binary()), gleam@option:option(binary()), gleam@option:option(binary()), gleam@option:option(binary()), gleam@option:option(binary()), gleam@option:option(binary()), gleam@option:option(binary()), gleam@option:option(binary()), gleam@option:option(binary()), gleam@option:option(binary()), gleam@option:option(binary()), gleam@option:option(binary())}. -type error() :: {pg_error, pg_error_fields(), gleam@option:option(integer()), gleam@option:option(binary())} | {connection_error, binary()} | {authentication_error, binary()} | {encode_error, binary()} | {decode_error, binary()} | {protocol_error, binary()} | {socket_error, binary()} | timeout_error. -file("src/postgleam/error.gleam", 70). -spec field(gleam@dict:dict(binary(), binary()), binary()) -> binary(). field(Fields, Key) -> case gleam_stdlib:map_get(Fields, Key) of {ok, V} -> V; {error, _} -> <<""/utf8>> end. -file("src/postgleam/error.gleam", 77). -spec opt_field(gleam@dict:dict(binary(), binary()), binary()) -> gleam@option:option(binary()). opt_field(Fields, Key) -> case gleam_stdlib:map_get(Fields, Key) of {ok, V} -> {some, V}; {error, _} -> none end. -file("src/postgleam/error.gleam", 48). ?DOC(" Parse a raw error field dict (from wire protocol) into structured PgErrorFields\n"). -spec parse_error_fields(gleam@dict:dict(binary(), binary())) -> pg_error_fields(). parse_error_fields(Fields) -> {pg_error_fields, field(Fields, <<"severity"/utf8>>), field(Fields, <<"code"/utf8>>), field(Fields, <<"message"/utf8>>), opt_field(Fields, <<"detail"/utf8>>), opt_field(Fields, <<"hint"/utf8>>), opt_field(Fields, <<"position"/utf8>>), opt_field(Fields, <<"internal_position"/utf8>>), opt_field(Fields, <<"internal_query"/utf8>>), opt_field(Fields, <<"where"/utf8>>), opt_field(Fields, <<"schema"/utf8>>), opt_field(Fields, <<"table"/utf8>>), opt_field(Fields, <<"column"/utf8>>), opt_field(Fields, <<"data_type"/utf8>>), opt_field(Fields, <<"constraint"/utf8>>), opt_field(Fields, <<"file"/utf8>>), opt_field(Fields, <<"line"/utf8>>), opt_field(Fields, <<"routine"/utf8>>)}.