mirror of https://github.com/jackc/pgx.git
57 lines
1.2 KiB
Plaintext
57 lines
1.2 KiB
Plaintext
package pgtype
|
|
|
|
<%
|
|
[
|
|
["Int4range", "Int4"],
|
|
["Int8range", "Int8"],
|
|
["Numrange", "Numeric"],
|
|
["Tsrange", "Timestamp"],
|
|
["Tstzrange", "Timestamptz"],
|
|
["Daterange", "Date"],
|
|
["Float8range", "Float8"]
|
|
].each do |range_type, element_type|
|
|
%>
|
|
type <%= range_type %> struct {
|
|
Lower <%= element_type %>
|
|
Upper <%= element_type %>
|
|
LowerType BoundType
|
|
UpperType BoundType
|
|
Valid bool
|
|
}
|
|
|
|
func (r <%= range_type %>) IsNull() bool {
|
|
return !r.Valid
|
|
}
|
|
|
|
func (r <%= range_type %>) BoundTypes() (lower, upper BoundType) {
|
|
return r.LowerType, r.UpperType
|
|
}
|
|
|
|
func (r <%= range_type %>) Bounds() (lower, upper interface{}) {
|
|
return &r.Lower, &r.Upper
|
|
}
|
|
|
|
func (r *<%= range_type %>) ScanNull() error {
|
|
*r = <%= range_type %>{}
|
|
return nil
|
|
}
|
|
|
|
func (r *<%= range_type %>) ScanBounds() (lowerTarget, upperTarget interface{}) {
|
|
return &r.Lower, &r.Upper
|
|
}
|
|
|
|
func (r *<%= range_type %>) SetBoundTypes(lower, upper BoundType) error {
|
|
if lower == Unbounded || lower == Empty {
|
|
r.Lower = <%= element_type %>{}
|
|
}
|
|
if upper == Unbounded || upper == Empty {
|
|
r.Upper = <%= element_type %>{}
|
|
}
|
|
r.LowerType = lower
|
|
r.UpperType = upper
|
|
r.Valid = true
|
|
return nil
|
|
}
|
|
|
|
<% end %>
|