🎨 Identify the database view whether is a "mirror" https://github.com/siyuan-note/siyuan/issues/9578
This commit is contained in:
parent
029dfefd1f
commit
e964eddbeb
2 changed files with 42 additions and 0 deletions
|
@ -142,6 +142,33 @@ func GetBlockAttributeViewKeys(blockID string) (ret []*BlockAttributeViewKeys) {
|
|||
}
|
||||
|
||||
blockIDs := av.GetMirrorBlockIDs(avID)
|
||||
if 1 > len(blockIDs) {
|
||||
// 老数据兼容处理
|
||||
avBts := treenode.GetBlockTreesByType("av")
|
||||
for _, avBt := range avBts {
|
||||
if nil == avBt {
|
||||
continue
|
||||
}
|
||||
tree, _ := loadTreeByBlockID(avBt.ID)
|
||||
if nil == tree {
|
||||
continue
|
||||
}
|
||||
node := treenode.GetNodeInTree(tree, avBt.ID)
|
||||
if nil == node {
|
||||
continue
|
||||
}
|
||||
if avID == node.AttributeViewID {
|
||||
blockIDs = append(blockIDs, avBt.ID)
|
||||
}
|
||||
}
|
||||
if 1 > len(blockIDs) {
|
||||
continue
|
||||
}
|
||||
blockIDs = gulu.Str.RemoveDuplicatedElem(blockIDs)
|
||||
for _, blockID := range blockIDs {
|
||||
av.UpsertBlockRel(avID, blockID)
|
||||
}
|
||||
}
|
||||
|
||||
ret = append(ret, &BlockAttributeViewKeys{
|
||||
AvID: avID,
|
||||
|
|
|
@ -53,6 +53,21 @@ type BlockTree struct {
|
|||
Type string // 类型
|
||||
}
|
||||
|
||||
func GetBlockTreesByType(typ string) (ret []*BlockTree) {
|
||||
blockTrees.Range(func(key, value interface{}) bool {
|
||||
slice := value.(*btSlice)
|
||||
slice.m.Lock()
|
||||
for _, b := range slice.data {
|
||||
if b.Type == typ {
|
||||
ret = append(ret, b)
|
||||
}
|
||||
}
|
||||
slice.m.Unlock()
|
||||
return true
|
||||
})
|
||||
return
|
||||
}
|
||||
|
||||
func GetBlockTreeByPath(path string) (ret *BlockTree) {
|
||||
blockTrees.Range(func(key, value interface{}) bool {
|
||||
slice := value.(*btSlice)
|
||||
|
|
Loading…
Add table
Reference in a new issue