From 96467d052ddf4c2a4046f0b5bafbcfcf451b1ae8 Mon Sep 17 00:00:00 2001 From: Daniel <845765@qq.com> Date: Thu, 13 Jul 2023 00:49:09 +0800 Subject: [PATCH] :recycle: Refactor av data structure --- kernel/model/attribute_view.go | 36 +++++++++++++++------------------- kernel/model/transaction.go | 1 + 2 files changed, 17 insertions(+), 20 deletions(-) diff --git a/kernel/model/attribute_view.go b/kernel/model/attribute_view.go index 7bb287361..1e049f262 100644 --- a/kernel/model/attribute_view.go +++ b/kernel/model/attribute_view.go @@ -286,15 +286,8 @@ func addAttributeViewBlock(blockID string, operation *Operation, tree *parse.Tre } } - for _, keyValues := range attrView.KeyValues { - value := &av.Value{KeyID: keyValues.Key.ID, BlockID: blockID} - blockValues.Values = append(blockValues.Values, value) - - if av.KeyTypeBlock == keyValues.Key.Type { - value.Block = &av.ValueBlock{ID: blockID, Content: getNodeRefText(node)} - break - } - } + value := &av.Value{KeyID: blockValues.Key.ID, BlockID: blockID, Block: &av.ValueBlock{ID: blockID, Content: getNodeRefText(node)}} + blockValues.Values = append(blockValues.Values, value) attrs := parse.IAL2Map(node.KramdownIAL) attrs[NodeAttrNamePrefixAvKey+operation.AvID+"-"+blockValues.Key.ID] = "" // 将列作为属性添加到块中 @@ -670,19 +663,22 @@ func updateAttributeViewCell(operation *Operation, tx *Transaction) (err error) var val *av.Value for _, keyValues := range attrView.KeyValues { - if operation.KeyID == keyValues.Key.ID { - for _, value := range keyValues.Values { - if operation.ID == value.ID { - val = value - break - } - } - break + if operation.KeyID != keyValues.Key.ID { + continue } - } - if nil == val { - return + for _, value := range keyValues.Values { + if operation.ID == value.ID { + val = value + break + } + } + + if nil == val { + val = &av.Value{ID: operation.ID, KeyID: keyValues.Key.ID, BlockID: operation.RowID} + keyValues.Values = append(keyValues.Values, val) + } + break } tree, err := tx.loadTree(val.BlockID) diff --git a/kernel/model/transaction.go b/kernel/model/transaction.go index 6ee3d1443..aa4637284 100644 --- a/kernel/model/transaction.go +++ b/kernel/model/transaction.go @@ -1055,6 +1055,7 @@ type Operation struct { Name string `json:"name"` // 属性视图列名 Typ string `json:"type"` // 属性视图列类型 KeyID string `json:"keyID"` // 属性视列 ID + RowID string `json:"rowID"` // 属性视图行 ID discard bool // 用于标识是否在事务合并中丢弃 }