Current section
Files
Jump to
Current section
Files
lib/hstore.ex
defmodule Hstore do
alias Postgrex.TypeInfo
alias Hstore.Decoder
alias Hstore.Encoder
@hstore_type %TypeInfo{sender: "hstore", type: "hstore"}
# passes in (TypeInfo, format, default, binary)
def decoder(@hstore_type, _format, _default, bin) do
Decoder.decode bin
end
def decoder(%TypeInfo{}, _format, default, bin) do
default.(bin)
end
def encoder(@hstore_type, _, nil) do
nil
end
def encoder(@hstore_type, _, value) do
Encoder.encode value
end
# If it is not sent by hstore, default that homie!
def encoder(%TypeInfo{}, default, value) do
default.(value)
end
def formatter(%TypeInfo{sender: "hstore"}), do: :text
def formatter(%TypeInfo{}), do: nil
end