Browse Source

:bug: Database filtering does not work after change the field type https://github.com/siyuan-note/siyuan/issues/10519

Daniel 1 year ago
parent
commit
fed412cc2f
2 changed files with 28 additions and 0 deletions
  1. 15 0
      kernel/av/av.go
  2. 13 0
      kernel/model/attribute_view.go

+ 15 - 0
kernel/av/av.go

@@ -321,6 +321,21 @@ func SaveAttributeView(av *AttributeView) (err error) {
 		}
 	}
 
+	// 补全过滤器 Value
+	for _, view := range av.Views {
+		if nil == view.Table {
+			for _, f := range view.Table.Filters {
+				if nil != f.Value {
+					continue
+				}
+
+				if k, _ := av.GetKey(f.Column); nil != k {
+					f.Value = &Value{Type: k.Type}
+				}
+			}
+		}
+	}
+
 	// 值去重
 	blockValues := av.GetBlockKeyValues()
 	blockIDs := map[string]bool{}

+ 13 - 0
kernel/model/attribute_view.go

@@ -695,6 +695,19 @@ func renderAttributeView(attrView *av.AttributeView, viewID string, page, pageSi
 		}
 	}
 
+	// 补全过滤器 Value
+	if nil != view.Table {
+		for _, f := range view.Table.Filters {
+			if nil != f.Value {
+				continue
+			}
+
+			if k, _ := attrView.GetKey(f.Column); nil != k {
+				f.Value = &av.Value{Type: k.Type}
+			}
+		}
+	}
+
 	switch view.LayoutType {
 	case av.LayoutTypeTable:
 		// 列删除以后需要删除设置的过滤和排序