From 8fb35f5565c197617f57f02def80f8bd6b374d3d Mon Sep 17 00:00:00 2001 From: Daniel <845765@qq.com> Date: Thu, 12 Oct 2023 17:15:36 +0800 Subject: [PATCH] :art: Database template columns support number filter Fix https://github.com/siyuan-note/siyuan/issues/9414 --- kernel/av/table.go | 59 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 59 insertions(+) diff --git a/kernel/av/table.go b/kernel/av/table.go index abdae0d17..5bd0177f6 100644 --- a/kernel/av/table.go +++ b/kernel/av/table.go @@ -474,6 +474,65 @@ func (value *Value) CompareOperator(other *Value, operator FilterOperator) bool return 0 != len(value.MAsset) && !(1 == len(value.MAsset) && "" == value.MAsset[0].Content) } } + + if nil != value.Template && nil != other.Template { + switch operator { + case FilterOperatorIsEqual: + if "" == strings.TrimSpace(other.Template.Content) { + return true + } + return value.Template.Content == other.Template.Content + case FilterOperatorIsNotEqual: + if "" == strings.TrimSpace(other.Template.Content) { + return true + } + return value.Template.Content != other.Template.Content + case FilterOperatorIsGreater: + if "" == strings.TrimSpace(other.Template.Content) { + return true + } + return value.Template.Content > other.Template.Content + case FilterOperatorIsGreaterOrEqual: + if "" == strings.TrimSpace(other.Template.Content) { + return true + } + return value.Template.Content >= other.Template.Content + case FilterOperatorIsLess: + if "" == strings.TrimSpace(other.Template.Content) { + return true + } + return value.Template.Content < other.Template.Content + case FilterOperatorIsLessOrEqual: + if "" == strings.TrimSpace(other.Template.Content) { + return true + } + return value.Template.Content <= other.Template.Content + case FilterOperatorContains: + if "" == strings.TrimSpace(other.Template.Content) { + return true + } + return strings.Contains(value.Template.Content, other.Template.Content) + case FilterOperatorDoesNotContain: + if "" == strings.TrimSpace(other.Template.Content) { + return true + } + return !strings.Contains(value.Template.Content, other.Template.Content) + case FilterOperatorStartsWith: + if "" == strings.TrimSpace(other.Template.Content) { + return true + } + return strings.HasPrefix(value.Template.Content, other.Template.Content) + case FilterOperatorEndsWith: + if "" == strings.TrimSpace(other.Template.Content) { + return true + } + return strings.HasSuffix(value.Template.Content, other.Template.Content) + case FilterOperatorIsEmpty: + return "" == strings.TrimSpace(value.Template.Content) + case FilterOperatorIsNotEmpty: + return "" != strings.TrimSpace(value.Template.Content) + } + } return true }