From b21bc5ba7c1717b558e2075bf662805f9f425d01 Mon Sep 17 00:00:00 2001 From: Daniel <845765@qq.com> Date: Fri, 30 Jun 2023 16:00:37 +0800 Subject: [PATCH] :art: Update av --- kernel/model/attribute_view.go | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/kernel/model/attribute_view.go b/kernel/model/attribute_view.go index 93f0d4fe1..3f93f71eb 100644 --- a/kernel/model/attribute_view.go +++ b/kernel/model/attribute_view.go @@ -104,10 +104,11 @@ func (tx *Transaction) doInsertAttrViewBlock(operation *Operation) (ret *TxErr) avID := operation.ParentID var avs []*av.AttributeView + previousID := operation.PreviousID for _, id := range operation.SrcIDs { var av *av.AttributeView var avErr error - if av, avErr = addAttributeViewBlock(id, avID, tree, tx); nil != avErr { + if av, avErr = addAttributeViewBlock(id, previousID, avID, tree, tx); nil != avErr { return &TxErr{code: TxErrWriteAttributeView, id: avID, msg: avErr.Error()} } @@ -243,7 +244,7 @@ func removeAttributeViewBlock(blockID, avID string, tree *parse.Tree) (ret *av.A return } -func addAttributeViewBlock(blockID, avID string, tree *parse.Tree, tx *Transaction) (ret *av.AttributeView, err error) { +func addAttributeViewBlock(blockID, previousRowID, avID string, tree *parse.Tree, tx *Transaction) (ret *av.AttributeView, err error) { node := treenode.GetNodeInTree(tree, blockID) if nil == node { err = ErrBlockNotFound @@ -287,7 +288,17 @@ func addAttributeViewBlock(blockID, avID string, tree *parse.Tree, tx *Transacti } } - ret.Rows = append(ret.Rows, row) + if "" == previousRowID { + ret.Rows = append([]*av.Row{row}, ret.Rows...) + } else { + for i, r := range ret.Rows { + if r.ID == previousRowID { + ret.Rows = append(ret.Rows[:i+1], append([]*av.Row{row}, ret.Rows[i+1:]...)...) + break + } + } + } + err = av.SaveAttributeView(ret) return }