From b244fd58237e37c0a38c024a8604fb445a11e8f3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BE=90=E6=B6=9B?= Date: Fri, 16 Jun 2023 08:36:11 +0800 Subject: [PATCH] =?UTF-8?q?enhance(types):=E5=A2=9E=E5=8A=A0=E8=8B=A5?= =?UTF-8?q?=E5=B9=B2=E5=B8=B8=E7=94=A8=E6=96=B9=E6=B3=95=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- types/daterange.go | 32 ++++++++++++++++++++++++++++++++ types/datetimerange.go | 32 ++++++++++++++++++++++++++++++++ 2 files changed, 64 insertions(+) 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 +}