From 4bead9aa08b1c3c9931603b8a6fd7ff1ae837920 Mon Sep 17 00:00:00 2001 From: Daniel <845765@qq.com> Date: Fri, 1 Dec 2023 20:06:08 +0800 Subject: [PATCH] :art: Supports multiple views for the database https://github.com/siyuan-note/siyuan/issues/9751 --- kernel/model/attribute_view.go | 31 ++++++++++++++++--------------- 1 file changed, 16 insertions(+), 15 deletions(-) diff --git a/kernel/model/attribute_view.go b/kernel/model/attribute_view.go index e5f183050..b95d88c84 100644 --- a/kernel/model/attribute_view.go +++ b/kernel/model/attribute_view.go @@ -649,26 +649,27 @@ func (tx *Transaction) doSortAttrViewView(operation *Operation) (ret *TxErr) { return } - view := attrView.GetView(viewID) + var view *av.View + var index, previousIndex int + for i, v := range attrView.Views { + if v.ID == viewID { + view = v + index = i + break + } + } if nil == view { - logging.LogErrorf("get view [%s] failed: %s", viewID, err) - return &TxErr{code: TxErrWriteAttributeView, id: viewID, msg: err.Error()} + return } - if "" == previewViewID { - // 插入到第一个 - attrView.Views = append([]*av.View{view}, attrView.Views...) - } else { - // 插入到 previewViewID 的后面 - var index int - for i, v := range attrView.Views { - if v.ID == previewViewID { - index = i + 1 - break - } + attrView.Views = append(attrView.Views[:index], attrView.Views[index+1:]...) + for i, v := range attrView.Views { + if v.ID == previewViewID { + previousIndex = i + 1 + break } - attrView.Views = util.InsertElem(attrView.Views, index, view) } + attrView.Views = util.InsertElem(attrView.Views, previousIndex, view) if err = av.SaveAttributeView(attrView); nil != err { logging.LogErrorf("save attribute view [%s] failed: %s", avID, err)