Packages
postgrex
0.13.2
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/extensions/box.ex
defmodule Postgrex.Extensions.Box do
@moduledoc false
import Postgrex.BinaryUtils, warn: false
use Postgrex.BinaryExtension, send: "box_send"
alias Postgrex.Extensions.Point
def encode(_) do
quote location: :keep do
%Postgrex.Box{upper_right: p1, bottom_left: p2} ->
encoded_p1 = Point.encode_point(p1, Postgrex.Box)
encoded_p2 = Point.encode_point(p2, Postgrex.Box)
# 2 points -> 16 bytes each
[<<32::int32>>, encoded_p1 | encoded_p2]
other ->
raise ArgumentError, Postgrex.Utils.encode_msg(other, Postgrex.Line)
end
end
def decode(_) do
quote location: :keep do
# 2 points -> 16 bytes each
<<32::int32, x1::float64, y1::float64, x2::float64, y2::float64>> ->
p1 = %Postgrex.Point{x: x1, y: y1}
p2 = %Postgrex.Point{x: x2, y: y2}
%Postgrex.Box{upper_right: p1, bottom_left: p2}
end
end
end