diff --git a/types/daterange.go b/types/daterange.go index 6b34a8a..b71b89c 100644 --- a/types/daterange.go +++ b/types/daterange.go @@ -134,3 +134,8 @@ func (dr DateRange) SafeLower() Date { return MinDate() } } + +func (dr DateRange) IsEmptyOrWild() bool { + return (dr.LowerType == pgtype.Unbounded && dr.UpperType == pgtype.Unbounded) || + (dr.LowerType == pgtype.Empty && dr.UpperType == pgtype.Empty) +} diff --git a/types/datetimerange.go b/types/datetimerange.go index 5927d8d..971fcf9 100644 --- a/types/datetimerange.go +++ b/types/datetimerange.go @@ -112,3 +112,8 @@ func (dr *DateTimeRange) SetUpperUnbounded() { dr.Range.Upper = MaxDateTime() dr.Range.UpperType = pgtype.Unbounded } + +func (dr DateTimeRange) IsEmptyOrWild() bool { + return (dr.Range.LowerType == pgtype.Unbounded && dr.Range.UpperType == pgtype.Unbounded) || + (dr.Range.LowerType == pgtype.Empty || dr.Range.UpperType == pgtype.Empty) +} diff --git a/types/range.go b/types/range.go index 178b59f..374db35 100644 --- a/types/range.go +++ b/types/range.go @@ -15,6 +15,10 @@ type ToString interface { ToString() string } +type CheckEmptyOrWild interface { + IsEmptyOrWild() bool +} + // 将一个字符串拆解解析为一个 Postgresql 范围类型的值。 func destructureToRange[T any, PT interface { Parse