diff --git a/types/daterange.go b/types/daterange.go index 17308b1..5ac1089 100644 --- a/types/daterange.go +++ b/types/daterange.go @@ -14,6 +14,18 @@ type DateRange struct { pgtype.Range[Date] } +func NewEmptyDateRange() DateRange { + return DateRange{ + Range: pgtype.Range[Date]{ + Lower: MinDate(), + LowerType: pgtype.Unbounded, + Upper: MaxDate(), + UpperType: pgtype.Unbounded, + Valid: true, + }, + } +} + func NewDateRange(lower *Date, upper *Date) DateRange { return DateRange{ Range: pgtype.Range[Date]{ @@ -78,3 +90,23 @@ func (dr *DateRange) UnmarshalJSON(data []byte) error { dr.Range = r return nil } + +func (dr *DateRange) SetLower(lower Date, bound pgtype.BoundType) { + dr.Range.Lower = lower + dr.Range.LowerType = bound +} + +func (dr *DateRange) SetLowerUnbounded() { + dr.Range.Lower = MinDate() + dr.Range.LowerType = pgtype.Unbounded +} + +func (dr *DateRange) SetUpper(upper Date, bound pgtype.BoundType) { + dr.Range.Upper = upper + dr.Range.UpperType = bound +} + +func (dr *DateRange) SetUpperUnbounded() { + dr.Range.Upper = MaxDate() + dr.Range.UpperType = pgtype.Unbounded +} diff --git a/types/datetimerange.go b/types/datetimerange.go index 46e9562..419a035 100644 --- a/types/datetimerange.go +++ b/types/datetimerange.go @@ -14,6 +14,18 @@ type DateTimeRange struct { pgtype.Range[DateTime] } +func NewEmptyDateTimeRange() DateTimeRange { + return DateTimeRange{ + Range: pgtype.Range[DateTime]{ + Lower: MinDateTime(), + LowerType: pgtype.Unbounded, + Upper: MaxDateTime(), + UpperType: pgtype.Unbounded, + Valid: true, + }, + } +} + func NewDateTimeRange(lower *DateTime, upper *DateTime) DateTimeRange { return DateTimeRange{ Range: pgtype.Range[DateTime]{ @@ -78,3 +90,23 @@ func (dr *DateTimeRange) UnmarshalJSON(data []byte) error { dr.Range = r return nil } + +func (dr *DateTimeRange) SetLower(lower DateTime, bound pgtype.BoundType) { + dr.Range.Lower = lower + dr.Range.LowerType = bound +} + +func (dr *DateTimeRange) SetLowerUnbounded() { + dr.Range.Lower = MinDateTime() + dr.Range.LowerType = pgtype.Unbounded +} + +func (dr *DateTimeRange) SetUpper(upper DateTime, bound pgtype.BoundType) { + dr.Range.Upper = upper + dr.Range.UpperType = bound +} + +func (dr *DateTimeRange) SetUpperUnbounded() { + dr.Range.Upper = MaxDateTime() + dr.Range.UpperType = pgtype.Unbounded +}