Packages
postgrex
0.9.1
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/extension.ex
defmodule Postgrex.Extension do
@moduledoc """
An extension knows how to encode and decode Postgres types to and from Elixir
values.
"""
use Behaviour
alias Postgrex.Types
alias Postgrex.TypeInfo
@type t :: module
@type opts :: term
@doc """
Should perform any initialization of the extension. The function receives the
server parameters (http://www.postgresql.org/docs/9.4/static/runtime-config.html)
and user options. The options returned from this function will be passed to
all other callbacks.
"""
defcallback init(Map.t, term) :: opts
@doc """
Specifies the types the extension matches, see `Postgrex.TypeInfo` for
specification of the fields.
"""
defcallback matching(opts) :: [type: String.t,
send: String.t,
receive: String.t,
input: String.t,
output: String.t]
@doc """
Returns the format the type should be encoded as. See
http://www.postgresql.org/docs/9.4/static/protocol-overview.html#PROTOCOL-FORMAT-CODES.
"""
defcallback format(opts) :: :binary | :text
@doc """
Should encode an Elixir value to a binary in the specified Postgres protocol
format.
"""
defcallback encode(TypeInfo.t, term, Types.types, opts) :: binary
@doc """
Should decode a binary in the specified Postgres protocol format to an Elixir
value.
"""
defcallback decode(TypeInfo.t, binary, Types.types, opts) :: term
end