Merge remote-tracking branch 'origin/dev' into dev
This commit is contained in:
commit
a329d073ab
1 changed files with 45 additions and 2 deletions
|
@ -233,8 +233,51 @@ func ParseAttributeView(avID string) (ret *AttributeView, err error) {
|
|||
ret = &AttributeView{}
|
||||
if err = gulu.JSON.UnmarshalJSON(data, ret); nil != err {
|
||||
if strings.Contains(err.Error(), ".relation.contents of type av.Value") {
|
||||
// v3.0.3 兼容之前旧版本,通过正则将 "relation":{"contents":[".*"],"blockIDs": 替换为 "relation":{"contents":null,"blockIDs":
|
||||
data = regexp.MustCompile(`"relation":{"contents":\[".*"\],"blockIDs":`).ReplaceAll(data, []byte(`"relation":{"contents":null,"blockIDs":`))
|
||||
mapAv := map[string]interface{}{}
|
||||
if err = gulu.JSON.UnmarshalJSON(data, &mapAv); nil != err {
|
||||
logging.LogErrorf("unmarshal attribute view [%s] failed: %s", avID, err)
|
||||
return
|
||||
}
|
||||
|
||||
// v3.0.3 兼容之前旧版本,将 relation.contents[""] 转换为 null
|
||||
keyValues := mapAv["keyValues"]
|
||||
keyValuesMap := keyValues.([]interface{})
|
||||
for _, kv := range keyValuesMap {
|
||||
kvMap := kv.(map[string]interface{})
|
||||
if values := kvMap["values"]; nil != values {
|
||||
valuesMap := values.([]interface{})
|
||||
for _, v := range valuesMap {
|
||||
if vMap := v.(map[string]interface{}); nil != vMap["relation"] {
|
||||
vMap["relation"].(map[string]interface{})["contents"] = nil
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
views := mapAv["views"]
|
||||
viewsMap := views.([]interface{})
|
||||
for _, view := range viewsMap {
|
||||
if table := view.(map[string]interface{})["table"]; nil != table {
|
||||
tableMap := table.(map[string]interface{})
|
||||
if filters := tableMap["filters"]; nil != filters {
|
||||
filtersMap := filters.([]interface{})
|
||||
for _, f := range filtersMap {
|
||||
if fMap := f.(map[string]interface{}); nil != fMap["value"] {
|
||||
if valueMap := fMap["value"].(map[string]interface{}); nil != valueMap["relation"] {
|
||||
valueMap["relation"].(map[string]interface{})["contents"] = nil
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
data, err = gulu.JSON.MarshalJSON(mapAv)
|
||||
if nil != err {
|
||||
logging.LogErrorf("marshal attribute view [%s] failed: %s", avID, err)
|
||||
return
|
||||
}
|
||||
|
||||
if err = gulu.JSON.UnmarshalJSON(data, ret); nil != err {
|
||||
logging.LogErrorf("unmarshal attribute view [%s] failed: %s", avID, err)
|
||||
return
|
||||
|
|
Loading…
Add table
Reference in a new issue