From 59e7fa0d7fa69159dab4526bd1a0501372bba1dc Mon Sep 17 00:00:00 2001 From: Liang Ding Date: Sat, 1 Apr 2023 17:08:57 +0800 Subject: [PATCH] :art: Attribute View map to database table https://github.com/siyuan-note/siyuan/issues/7677 --- kernel/model/attribute_view.go | 26 +++++++++++++++++++------- 1 file changed, 19 insertions(+), 7 deletions(-) diff --git a/kernel/model/attribute_view.go b/kernel/model/attribute_view.go index 2cddd0b30..49c586bf8 100644 --- a/kernel/model/attribute_view.go +++ b/kernel/model/attribute_view.go @@ -66,7 +66,6 @@ func (tx *Transaction) doInsertAttrViewBlock(operation *Operation) (ret *TxErr) for _, av := range avs { sql.RebuildAttributeViewQueue(av) } - return } @@ -78,11 +77,24 @@ func (tx *Transaction) doRemoveAttrViewBlock(operation *Operation) (ret *TxErr) return &TxErr{code: TxErrCodeBlockNotFound, id: firstSrcID} } + var avs []*av.AttributeView avID := operation.ParentID for _, id := range operation.SrcIDs { - if err = removeAttributeViewBlock(id, avID, tree, tx); nil != err { + var av *av.AttributeView + var avErr error + if av, avErr = removeAttributeViewBlock(id, avID, tree); nil != avErr { return &TxErr{code: TxErrWriteAttributeView, id: avID} } + + if nil == av { + continue + } + + avs = append(avs, av) + } + + for _, av := range avs { + sql.RebuildAttributeViewQueue(av) } return } @@ -140,27 +152,27 @@ func removeAttributeViewColumn(columnID string, avID string) (err error) { return } -func removeAttributeViewBlock(blockID, avID string, tree *parse.Tree, tx *Transaction) (err error) { +func removeAttributeViewBlock(blockID, avID string, tree *parse.Tree) (ret *av.AttributeView, err error) { node := treenode.GetNodeInTree(tree, blockID) if nil == node { err = ErrBlockNotFound return } - attrView, err := av.ParseAttributeView(avID) + ret, err = av.ParseAttributeView(avID) if nil != err { return } - for i, row := range attrView.Rows { + for i, row := range ret.Rows { if row.Cells[0].Value == blockID { // 从行中移除,但是不移除属性 - attrView.Rows = append(attrView.Rows[:i], attrView.Rows[i+1:]...) + ret.Rows = append(ret.Rows[:i], ret.Rows[i+1:]...) break } } - err = av.SaveAttributeView(attrView) + err = av.SaveAttributeView(ret) return }