From 42cc7c73e69a4d2f7154191f3f4b16d0cdf0c267 Mon Sep 17 00:00:00 2001 From: Daniel <845765@qq.com> Date: Fri, 27 Sep 2024 10:35:00 +0800 Subject: [PATCH] :art: Improve av date between filter https://github.com/siyuan-note/siyuan/issues/12546 --- kernel/av/filter.go | 31 +++++++++++-------------------- 1 file changed, 11 insertions(+), 20 deletions(-) diff --git a/kernel/av/filter.go b/kernel/av/filter.go index 5c2aaaf0f..3dac8c3f6 100644 --- a/kernel/av/filter.go +++ b/kernel/av/filter.go @@ -314,12 +314,9 @@ func (value *Value) filter(other *Value, relativeDate, relativeDate2 *RelativeDa } if nil != relativeDate { // 使用相对时间比较 - count := relativeDate.Count - unit := relativeDate.Unit - direction := relativeDate.Direction - relativeTimeStart, relativeTimeEnd := calcRelativeTimeRegion(count, unit, direction) - _, relativeTimeEnd2 := calcRelativeTimeRegion(relativeDate2.Count, relativeDate2.Unit, relativeDate2.Direction) - return filterRelativeTime(value.Date.Content, value.Date.IsNotEmpty, relativeTimeStart, relativeTimeEnd, relativeTimeEnd2, operator) + relativeTimeStart, relativeTimeEnd := calcRelativeTimeRegion(relativeDate.Count, relativeDate.Unit, relativeDate.Direction) + relativeTimeStart2, relativeTimeEnd2 := calcRelativeTimeRegion(relativeDate2.Count, relativeDate2.Unit, relativeDate2.Direction) + return filterRelativeTime(value.Date.Content, value.Date.IsNotEmpty, relativeTimeStart, relativeTimeEnd, relativeTimeStart2, relativeTimeEnd2, operator) } else { // 使用具体时间比较 if nil == other.Date { return true @@ -330,12 +327,9 @@ func (value *Value) filter(other *Value, relativeDate, relativeDate2 *RelativeDa case KeyTypeCreated: if nil != value.Created { if nil != relativeDate { // 使用相对时间比较 - count := relativeDate.Count - unit := relativeDate.Unit - direction := relativeDate.Direction - relativeTimeStart, relativeTimeEnd := calcRelativeTimeRegion(count, unit, direction) - _, relativeTimeEnd2 := calcRelativeTimeRegion(relativeDate2.Count, relativeDate2.Unit, relativeDate2.Direction) - return filterRelativeTime(value.Created.Content, true, relativeTimeStart, relativeTimeEnd, relativeTimeEnd2, operator) + relativeTimeStart, relativeTimeEnd := calcRelativeTimeRegion(relativeDate.Count, relativeDate.Unit, relativeDate.Direction) + relativeTimeStart2, relativeTimeEnd2 := calcRelativeTimeRegion(relativeDate2.Count, relativeDate2.Unit, relativeDate2.Direction) + return filterRelativeTime(value.Created.Content, true, relativeTimeStart, relativeTimeEnd, relativeTimeStart2, relativeTimeEnd2, operator) } else { // 使用具体时间比较 if nil == other.Created { return true @@ -346,12 +340,9 @@ func (value *Value) filter(other *Value, relativeDate, relativeDate2 *RelativeDa case KeyTypeUpdated: if nil != value.Updated { if nil != relativeDate { // 使用相对时间比较 - count := relativeDate.Count - unit := relativeDate.Unit - direction := relativeDate.Direction - relativeTimeStart, relativeTimeEnd := calcRelativeTimeRegion(count, unit, direction) - _, relativeTimeEnd2 := calcRelativeTimeRegion(relativeDate2.Count, relativeDate2.Unit, relativeDate2.Direction) - return filterRelativeTime(value.Updated.Content, true, relativeTimeStart, relativeTimeEnd, relativeTimeEnd2, operator) + relativeTimeStart, relativeTimeEnd := calcRelativeTimeRegion(relativeDate.Count, relativeDate.Unit, relativeDate.Direction) + relativeTimeStart2, relativeTimeEnd2 := calcRelativeTimeRegion(relativeDate2.Count, relativeDate2.Unit, relativeDate2.Direction) + return filterRelativeTime(value.Updated.Content, true, relativeTimeStart, relativeTimeEnd, relativeTimeStart2, relativeTimeEnd2, operator) } else { // 使用具体时间比较 if nil == other.Updated { return true @@ -578,7 +569,7 @@ func (value *Value) filter(other *Value, relativeDate, relativeDate2 *RelativeDa return false } -func filterRelativeTime(valueMills int64, valueIsNotEmpty bool, otherValueStart, otherValueEnd, otherValueEnd2 time.Time, operator FilterOperator) bool { +func filterRelativeTime(valueMills int64, valueIsNotEmpty bool, otherValueStart, otherValueEnd, otherValueStart2, otherValueEnd2 time.Time, operator FilterOperator) bool { valueTime := time.UnixMilli(valueMills) switch operator { case FilterOperatorIsEqual: @@ -594,7 +585,7 @@ func filterRelativeTime(valueMills int64, valueIsNotEmpty bool, otherValueStart, case FilterOperatorIsLessOrEqual: return valueTime.Before(otherValueEnd) || valueTime.Equal(otherValueEnd) case FilterOperatorIsBetween: - return (valueTime.After(otherValueStart) || valueTime.Equal(otherValueStart)) && valueTime.Before(otherValueEnd2) + return (valueTime.After(otherValueStart) || valueTime.Equal(otherValueStart)) && valueTime.Before(otherValueStart2) case FilterOperatorIsEmpty: return !valueIsNotEmpty case FilterOperatorIsNotEmpty: