Packages
postgrex
0.13.3
1.0.0-rc.1
retired
1.0.0-rc.0
retired
0.22.3
0.22.2
0.22.1
0.22.0
0.21.1
0.21.0
0.20.0
0.19.3
0.19.2
0.19.1
0.19.0
0.18.0
0.17.5
0.17.4
0.17.3
0.17.2
0.17.1
0.17.0
0.16.5
0.16.4
0.16.3
0.16.2
0.16.1
0.16.0
0.15.13
0.15.12
0.15.11
0.15.10
0.15.9
0.15.8
0.15.7
0.15.6
0.15.5
0.15.4
0.15.3
0.15.2
0.15.1
0.15.0
0.14.3
0.14.2
0.14.1
0.14.0
0.14.0-rc.1
0.14.0-rc.0
0.13.5
0.13.4
0.13.3
0.13.2
0.13.1
0.13.0
0.13.0-rc.0
0.12.2
0.12.1
0.12.0
0.11.2
0.11.1
0.11.0
0.10.0
0.9.1
0.9.0
0.8.4
0.8.3
0.8.2
0.8.1
0.8.0
0.7.0
0.6.0
0.5.5
0.5.4
0.5.3
0.5.2
0.5.1
0.5.0
0.4.2
PostgreSQL driver for Elixir
Current section
Files
Jump to
Current section
Files
lib/postgrex/error.ex
defmodule Postgrex.Error do
defexception [:message, :postgres, :connection_id]
@type t :: %Postgrex.Error{}
@metadata [:table, :column, :constraint]
def message(e) do
if kw = e.postgres do
"#{kw[:severity]} #{kw[:pg_code]} (#{kw[:code]}): #{kw[:message]}"
<> build_metadata(kw)
<> build_detail(kw)
else
e.message
end
end
defp build_metadata(kw) do
metadata = for k <- @metadata, v = kw[k], do: "\n #{k}: #{v}"
case metadata do
[] -> ""
_ -> "\n" <> Enum.join(metadata)
end
end
defp build_detail(kw) do
if v = kw[:detail], do: "\n\n" <> v, else: ""
end
def exception([postgres: fields]) do
fields = Enum.into(fields, %{})
|> Map.put(:pg_code, fields[:code])
|> Map.update!(:code, &Postgrex.ErrorCode.code_to_name/1)
%Postgrex.Error{postgres: fields}
end
def exception(arg) do
super(arg)
end
end