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

This commit is contained in:
Daniel 2024-03-06 20:40:48 +08:00
parent c0c3fee372
commit 1442a91783
No known key found for this signature in database
GPG key ID: 86211BA83DF03017

View file

@ -307,7 +307,7 @@ func (value *Value) compareOperator(filter *ViewFilter) bool {
operator := filter.Operator operator := filter.Operator
switch value.Type { switch value.Type {
case KeyTypeBlock: case KeyTypeBlock:
if nil != value.Block && nil != filter.Value.Block { if nil != value.Block && nil != filter.Value && nil != filter.Value.Block {
switch operator { switch operator {
case FilterOperatorIsEqual: case FilterOperatorIsEqual:
return value.Block.Content == filter.Value.Block.Content return value.Block.Content == filter.Value.Block.Content
@ -328,7 +328,7 @@ func (value *Value) compareOperator(filter *ViewFilter) bool {
} }
} }
case KeyTypeText: case KeyTypeText:
if nil != value.Text && nil != filter.Value.Text { if nil != value.Text && nil != filter.Value && nil != filter.Value.Text {
switch operator { switch operator {
case FilterOperatorIsEqual: case FilterOperatorIsEqual:
if "" == strings.TrimSpace(filter.Value.Text.Content) { if "" == strings.TrimSpace(filter.Value.Text.Content) {
@ -367,7 +367,7 @@ func (value *Value) compareOperator(filter *ViewFilter) bool {
} }
} }
case KeyTypeNumber: case KeyTypeNumber:
if nil != value.Number && nil != filter.Value.Number { if nil != value.Number && nil != filter.Value && nil != filter.Value.Number {
switch operator { switch operator {
case FilterOperatorIsEqual: case FilterOperatorIsEqual:
if !filter.Value.Number.IsNotEmpty { if !filter.Value.Number.IsNotEmpty {
@ -459,7 +459,7 @@ func (value *Value) compareOperator(filter *ViewFilter) bool {
} }
} }
case KeyTypeCreated: case KeyTypeCreated:
if nil != value.Created && nil != filter.Value.Created { if nil != value.Created && nil != filter.Value && nil != filter.Value.Created {
switch operator { switch operator {
case FilterOperatorIsEqual: case FilterOperatorIsEqual:
start := time.UnixMilli(filter.Value.Created.Content) start := time.UnixMilli(filter.Value.Created.Content)
@ -502,7 +502,7 @@ func (value *Value) compareOperator(filter *ViewFilter) bool {
} }
} }
case KeyTypeUpdated: case KeyTypeUpdated:
if nil != value.Updated && nil != filter.Value.Updated { if nil != value.Updated && nil != filter.Value && nil != filter.Value.Updated {
switch operator { switch operator {
case FilterOperatorIsEqual: case FilterOperatorIsEqual:
start := time.UnixMilli(filter.Value.Updated.Content) start := time.UnixMilli(filter.Value.Updated.Content)
@ -546,7 +546,7 @@ func (value *Value) compareOperator(filter *ViewFilter) bool {
} }
case KeyTypeSelect, KeyTypeMSelect: case KeyTypeSelect, KeyTypeMSelect:
if nil != value.MSelect { if nil != value.MSelect {
if nil != filter.Value.MSelect { if nil != filter.Value && nil != filter.Value.MSelect {
switch operator { switch operator {
case FilterOperatorIsEqual, FilterOperatorContains: case FilterOperatorIsEqual, FilterOperatorContains:
contains := false contains := false
@ -590,7 +590,7 @@ func (value *Value) compareOperator(filter *ViewFilter) bool {
} }
} }
case KeyTypeURL: case KeyTypeURL:
if nil != value.URL && nil != filter.Value.URL { if nil != value.URL && nil != filter.Value && nil != filter.Value.URL {
switch operator { switch operator {
case FilterOperatorIsEqual: case FilterOperatorIsEqual:
return value.URL.Content == filter.Value.URL.Content return value.URL.Content == filter.Value.URL.Content
@ -611,7 +611,7 @@ func (value *Value) compareOperator(filter *ViewFilter) bool {
} }
} }
case KeyTypeEmail: case KeyTypeEmail:
if nil != value.Email && nil != filter.Value.Email { if nil != value.Email && nil != filter.Value && nil != filter.Value.Email {
switch operator { switch operator {
case FilterOperatorIsEqual: case FilterOperatorIsEqual:
return value.Email.Content == filter.Value.Email.Content return value.Email.Content == filter.Value.Email.Content
@ -632,7 +632,7 @@ func (value *Value) compareOperator(filter *ViewFilter) bool {
} }
} }
case KeyTypePhone: case KeyTypePhone:
if nil != value.Phone && nil != filter.Value.Phone { if nil != value.Phone && nil != filter.Value && nil != filter.Value.Phone {
switch operator { switch operator {
case FilterOperatorIsEqual: case FilterOperatorIsEqual:
return value.Phone.Content == filter.Value.Phone.Content return value.Phone.Content == filter.Value.Phone.Content
@ -653,7 +653,7 @@ func (value *Value) compareOperator(filter *ViewFilter) bool {
} }
} }
case KeyTypeMAsset: case KeyTypeMAsset:
if nil != value.MAsset && nil != filter.Value.MAsset && 0 < len(value.MAsset) && 0 < len(filter.Value.MAsset) { if nil != value.MAsset && nil != filter.Value && nil != filter.Value.MAsset && 0 < len(value.MAsset) && 0 < len(filter.Value.MAsset) {
switch operator { switch operator {
case FilterOperatorIsEqual, FilterOperatorContains: case FilterOperatorIsEqual, FilterOperatorContains:
contains := false contains := false
@ -684,7 +684,7 @@ func (value *Value) compareOperator(filter *ViewFilter) bool {
} }
} }
case KeyTypeTemplate: case KeyTypeTemplate:
if nil != value.Template && nil != filter.Value.Template { if nil != value.Template && nil != filter.Value && nil != filter.Value.Template {
switch operator { switch operator {
case FilterOperatorIsEqual: case FilterOperatorIsEqual:
if "" == strings.TrimSpace(filter.Value.Template.Content) { if "" == strings.TrimSpace(filter.Value.Template.Content) {
@ -752,7 +752,7 @@ func (value *Value) compareOperator(filter *ViewFilter) bool {
} }
} }
case KeyTypeRelation: case KeyTypeRelation:
if nil != value.Relation && nil != filter.Value.Relation { if nil != value.Relation && nil != filter.Value && nil != filter.Value.Relation {
switch operator { switch operator {
case FilterOperatorContains: case FilterOperatorContains:
contains := false contains := false