A privacy-first, self-hosted, fully open source personal knowledge management software, written in typescript and golang. (PERSONAL FORK)
at lambda-fork/main 57 lines 1.7 kB view raw
1// SiYuan - Refactor your thinking 2// Copyright (c) 2020-present, b3log.org 3// 4// This program is free software: you can redistribute it and/or modify 5// it under the terms of the GNU Affero General Public License as published by 6// the Free Software Foundation, either version 3 of the License, or 7// (at your option) any later version. 8// 9// This program is distributed in the hope that it will be useful, 10// but WITHOUT ANY WARRANTY; without even the implied warranty of 11// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12// GNU Affero General Public License for more details. 13// 14// You should have received a copy of the GNU Affero General Public License 15// along with this program. If not, see <https://www.gnu.org/licenses/>. 16 17package treenode 18 19import ( 20 "path/filepath" 21 22 "github.com/siyuan-note/filelock" 23 "github.com/siyuan-note/logging" 24 "github.com/siyuan-note/siyuan/kernel/av" 25 "github.com/siyuan-note/siyuan/kernel/util" 26 "github.com/vmihailenco/msgpack/v5" 27) 28 29func GetMirrorAttrViewBlockIDs(avID string) (ret []string) { 30 av.AttributeViewBlocksLock.Lock() 31 defer av.AttributeViewBlocksLock.Unlock() 32 33 ret = []string{} 34 blocks := filepath.Join(util.DataDir, "storage", "av", "blocks.msgpack") 35 if !filelock.IsExist(blocks) { 36 return 37 } 38 39 data, err := filelock.ReadFile(blocks) 40 if err != nil { 41 logging.LogErrorf("read attribute view blocks failed: %s", err) 42 return 43 } 44 45 avBlocks := map[string][]string{} 46 if err = msgpack.Unmarshal(data, &avBlocks); err != nil { 47 logging.LogErrorf("unmarshal attribute view blocks failed: %s", err) 48 return 49 } 50 51 blockIDs := avBlocks[avID] 52 bts := GetBlockTrees(blockIDs) 53 for blockID := range bts { 54 ret = append(ret, blockID) 55 } 56 return 57}