mirror of
https://github.com/siyuan-note/siyuan
synced 2026-04-21 13:37:52 +00:00
🎨 Treat the renaming of tags, bookmarks and assets as a data history Replace operation https://github.com/siyuan-note/siyuan/issues/17407#issuecomment-4283539036
Signed-off-by: Daniel <845765@qq.com>
This commit is contained in:
parent
1cb44c4d24
commit
464b72b24d
8 changed files with 46 additions and 38 deletions
|
|
@ -787,7 +787,7 @@ func RemoveUnusedAssets() (ret []string) {
|
|||
|
||||
unusedAssets := UnusedAssets(false)
|
||||
|
||||
historyDir, err := GetHistoryDir(HistoryOpClean)
|
||||
historyDir, err := getHistoryDir(HistoryOpClean)
|
||||
if err != nil {
|
||||
logging.LogErrorf("get history dir failed: %s", err)
|
||||
return
|
||||
|
|
@ -857,7 +857,7 @@ func RemoveUnusedAsset(p string) (ret string) {
|
|||
return absPath
|
||||
}
|
||||
|
||||
historyDir, err := GetHistoryDir(HistoryOpClean)
|
||||
historyDir, err := getHistoryDir(HistoryOpClean)
|
||||
if err != nil {
|
||||
logging.LogErrorf("get history dir failed: %s", err)
|
||||
return
|
||||
|
|
@ -942,7 +942,11 @@ func RenameAsset(oldPath, newName string) (newPath string, err error) {
|
|||
return
|
||||
}
|
||||
|
||||
historyDir, err := getHistoryDir(HistoryOpReplace, time.Now())
|
||||
historyDir, err := getHistoryDir(HistoryOpReplace)
|
||||
if nil != err {
|
||||
return
|
||||
}
|
||||
|
||||
luteEngine := util.NewLute()
|
||||
for _, notebook := range notebooks {
|
||||
pages := pagedPaths(filepath.Join(util.DataDir, notebook.ID), 32)
|
||||
|
|
@ -975,7 +979,7 @@ func RenameAsset(oldPath, newName string) (newPath string, err error) {
|
|||
continue
|
||||
}
|
||||
|
||||
generateTreeHistory(historyDir, tree)
|
||||
generateTreeHistory(tree, historyDir)
|
||||
treenode.UpsertBlockTree(tree)
|
||||
sql.UpsertTreeQueue(tree)
|
||||
|
||||
|
|
|
|||
|
|
@ -56,7 +56,7 @@ func RemoveUnusedAttributeView(id string) {
|
|||
return
|
||||
}
|
||||
|
||||
historyDir, err := GetHistoryDir(HistoryOpClean)
|
||||
historyDir, err := getHistoryDir(HistoryOpClean)
|
||||
if err != nil {
|
||||
logging.LogErrorf("get history dir failed: %s", err)
|
||||
return
|
||||
|
|
@ -94,7 +94,7 @@ func RemoveUnusedAttributeViews() (ret []string) {
|
|||
|
||||
unusedAttributeViews := UnusedAttributeViews(false)
|
||||
|
||||
historyDir, err := GetHistoryDir(HistoryOpClean)
|
||||
historyDir, err := getHistoryDir(HistoryOpClean)
|
||||
if err != nil {
|
||||
logging.LogErrorf("get history dir failed: %s", err)
|
||||
return
|
||||
|
|
@ -3808,7 +3808,7 @@ func removeAttributeViewBlock(srcIDs []string, avID string, tx *Transaction) (er
|
|||
|
||||
refreshRelatedSrcAvs(avID, tx)
|
||||
|
||||
historyDir, err := GetHistoryDir(HistoryOpUpdate)
|
||||
historyDir, err := getHistoryDir(HistoryOpUpdate)
|
||||
if err != nil {
|
||||
logging.LogErrorf("get history dir failed: %s", err)
|
||||
return
|
||||
|
|
|
|||
|
|
@ -22,7 +22,6 @@ import (
|
|||
"path/filepath"
|
||||
"sort"
|
||||
"strings"
|
||||
"time"
|
||||
|
||||
"github.com/88250/gulu"
|
||||
"github.com/88250/lute/parse"
|
||||
|
|
@ -36,6 +35,7 @@ import (
|
|||
|
||||
func RemoveBookmark(bookmark string) (err error) {
|
||||
util.PushEndlessProgress(Conf.Language(116))
|
||||
defer util.PushClearProgress()
|
||||
|
||||
bookmarks := sql.QueryBookmarkBlocks()
|
||||
treeBlocks := map[string][]string{}
|
||||
|
|
@ -47,13 +47,15 @@ func RemoveBookmark(bookmark string) (err error) {
|
|||
}
|
||||
}
|
||||
|
||||
historyDir, err := getHistoryDir(HistoryOpReplace, time.Now())
|
||||
historyDir, err := getHistoryDir(HistoryOpReplace)
|
||||
if nil != err {
|
||||
return
|
||||
}
|
||||
|
||||
for treeID, blocks := range treeBlocks {
|
||||
util.PushEndlessProgress("[" + treeID + "]")
|
||||
tree, e := LoadTreeByBlockID(treeID)
|
||||
if nil != e {
|
||||
util.PushClearProgress()
|
||||
return e
|
||||
}
|
||||
|
||||
|
|
@ -72,7 +74,7 @@ func RemoveBookmark(bookmark string) (err error) {
|
|||
}
|
||||
|
||||
if changed {
|
||||
generateTreeHistory(historyDir, tree)
|
||||
generateTreeHistory(tree, historyDir)
|
||||
util.PushEndlessProgress(fmt.Sprintf(Conf.Language(111), util.EscapeHTML(tree.Root.IALAttr("title"))))
|
||||
if err = writeTreeUpsertQueue(tree); err != nil {
|
||||
util.ClearPushProgress(100)
|
||||
|
|
@ -105,6 +107,7 @@ func RenameBookmark(oldBookmark, newBookmark string) (err error) {
|
|||
}
|
||||
|
||||
util.PushEndlessProgress(Conf.Language(110))
|
||||
defer util.ClearPushProgress(100)
|
||||
|
||||
bookmarks := sql.QueryBookmarkBlocks()
|
||||
treeBlocks := map[string][]string{}
|
||||
|
|
@ -116,12 +119,15 @@ func RenameBookmark(oldBookmark, newBookmark string) (err error) {
|
|||
}
|
||||
}
|
||||
|
||||
historyDir, err := getHistoryDir(HistoryOpReplace, time.Now())
|
||||
historyDir, err := getHistoryDir(HistoryOpReplace)
|
||||
if nil != err {
|
||||
return
|
||||
}
|
||||
|
||||
for treeID, blocks := range treeBlocks {
|
||||
util.PushEndlessProgress("[" + treeID + "]")
|
||||
tree, e := LoadTreeByBlockID(treeID)
|
||||
if nil != e {
|
||||
util.ClearPushProgress(100)
|
||||
return e
|
||||
}
|
||||
|
||||
|
|
@ -140,7 +146,7 @@ func RenameBookmark(oldBookmark, newBookmark string) (err error) {
|
|||
}
|
||||
|
||||
if changed {
|
||||
generateTreeHistory(historyDir, tree)
|
||||
generateTreeHistory(tree, historyDir)
|
||||
util.PushEndlessProgress(fmt.Sprintf(Conf.Language(111), util.EscapeHTML(tree.Root.IALAttr("title"))))
|
||||
if err = writeTreeUpsertQueue(tree); err != nil {
|
||||
util.ClearPushProgress(100)
|
||||
|
|
|
|||
|
|
@ -1565,7 +1565,7 @@ func removeDoc(box *Box, p string, luteEngine *lute.Lute) (ret *parse.Tree) {
|
|||
return
|
||||
}
|
||||
|
||||
historyDir, err := GetHistoryDir(HistoryOpDelete)
|
||||
historyDir, err := getHistoryDir(HistoryOpDelete)
|
||||
if err != nil {
|
||||
logging.LogErrorf("get history dir failed: %s", err)
|
||||
return
|
||||
|
|
|
|||
|
|
@ -633,7 +633,7 @@ func generateAssetsHistory() {
|
|||
return
|
||||
}
|
||||
|
||||
historyDir, err := GetHistoryDir(HistoryOpUpdate)
|
||||
historyDir, err := getHistoryDir(HistoryOpUpdate)
|
||||
if err != nil {
|
||||
logging.LogErrorf("get history dir failed: %s", err)
|
||||
return
|
||||
|
|
@ -662,7 +662,7 @@ func (box *Box) generateDocHistory0() {
|
|||
return
|
||||
}
|
||||
|
||||
historyDir, err := GetHistoryDir(HistoryOpUpdate)
|
||||
historyDir, err := getHistoryDir(HistoryOpUpdate)
|
||||
if err != nil {
|
||||
logging.LogErrorf("get history dir failed: %s", err)
|
||||
return
|
||||
|
|
@ -820,23 +820,21 @@ const (
|
|||
)
|
||||
|
||||
func generateOpTypeHistory(tree *parse.Tree, opType string) {
|
||||
historyDir, err := GetHistoryDir(opType)
|
||||
historyDir, err := getHistoryDir(opType)
|
||||
if err != nil {
|
||||
logging.LogErrorf("get history dir failed: %s", err)
|
||||
return
|
||||
}
|
||||
|
||||
if err = generateTreeHistory(historyDir, tree); err != nil {
|
||||
return
|
||||
}
|
||||
|
||||
generateTreeHistory(tree, historyDir)
|
||||
generateAvHistoryInTree(tree, historyDir)
|
||||
|
||||
indexHistoryDir(filepath.Base(historyDir), util.NewLute())
|
||||
}
|
||||
|
||||
func generateTreeHistory(historyDir string, tree *parse.Tree) (err error) {
|
||||
func generateTreeHistory(tree *parse.Tree, historyDir string) {
|
||||
historyPath := filepath.Join(historyDir, tree.Box, tree.Path)
|
||||
var err error
|
||||
if err = os.MkdirAll(filepath.Dir(historyPath), 0755); err != nil {
|
||||
logging.LogErrorf("generate history failed: %s", err)
|
||||
return
|
||||
|
|
@ -866,12 +864,8 @@ func generateAvHistoryInTree(tree *parse.Tree, historyDir string) {
|
|||
}
|
||||
}
|
||||
|
||||
func GetHistoryDir(suffix string) (ret string, err error) {
|
||||
return getHistoryDir(suffix, time.Now())
|
||||
}
|
||||
|
||||
func getHistoryDir(suffix string, t time.Time) (ret string, err error) {
|
||||
ret = filepath.Join(util.HistoryDir, t.Format("2006-01-02-150405")+"-"+suffix)
|
||||
func getHistoryDir(suffix string) (ret string, err error) {
|
||||
ret = filepath.Join(util.HistoryDir, time.Now().Format("2006-01-02-150405")+"-"+suffix)
|
||||
if err = os.MkdirAll(ret, 0755); err != nil {
|
||||
logging.LogErrorf("make history dir failed: %s", err)
|
||||
return
|
||||
|
|
|
|||
|
|
@ -138,7 +138,7 @@ func RemoveBox(boxID string) (err error) {
|
|||
|
||||
if !isUserGuide {
|
||||
var historyDir string
|
||||
historyDir, err = GetHistoryDir(HistoryOpDelete)
|
||||
historyDir, err = getHistoryDir(HistoryOpDelete)
|
||||
if err != nil {
|
||||
logging.LogErrorf("get history dir failed: %s", err)
|
||||
return
|
||||
|
|
|
|||
|
|
@ -513,9 +513,8 @@ func FindReplace(keyword, replacement string, replaceTypes map[string]bool, ids
|
|||
renameRootTitles := map[string]string{}
|
||||
cachedTrees := map[string]*parse.Tree{}
|
||||
|
||||
historyDir, err := getHistoryDir(HistoryOpReplace, time.Now())
|
||||
historyDir, err := getHistoryDir(HistoryOpReplace)
|
||||
if err != nil {
|
||||
logging.LogErrorf("get history dir failed: %s", err)
|
||||
return
|
||||
}
|
||||
|
||||
|
|
@ -543,7 +542,7 @@ func FindReplace(keyword, replacement string, replaceTypes map[string]bool, ids
|
|||
continue
|
||||
}
|
||||
|
||||
generateTreeHistory(historyDir, tree)
|
||||
generateTreeHistory(tree, historyDir)
|
||||
|
||||
cachedTrees[bt.RootID] = tree
|
||||
}
|
||||
|
|
|
|||
|
|
@ -22,7 +22,6 @@ import (
|
|||
"path/filepath"
|
||||
"sort"
|
||||
"strings"
|
||||
"time"
|
||||
|
||||
"github.com/88250/gulu"
|
||||
"github.com/88250/lute/ast"
|
||||
|
|
@ -49,7 +48,10 @@ func RemoveTag(label string) (err error) {
|
|||
|
||||
var reloadTreeIDs []string
|
||||
updateNodes := map[string]*ast.Node{}
|
||||
historyDir, err := getHistoryDir(HistoryOpReplace, time.Now())
|
||||
historyDir, err := getHistoryDir(HistoryOpReplace)
|
||||
if nil != err {
|
||||
return
|
||||
}
|
||||
|
||||
for treeID, blocks := range treeBlocks {
|
||||
util.PushEndlessProgress("[" + treeID + "]")
|
||||
|
|
@ -59,7 +61,7 @@ func RemoveTag(label string) (err error) {
|
|||
return e
|
||||
}
|
||||
|
||||
generateTreeHistory(historyDir, tree)
|
||||
generateTreeHistory(tree, historyDir)
|
||||
|
||||
var unlinks []*ast.Node
|
||||
for _, blockID := range blocks {
|
||||
|
|
@ -153,7 +155,10 @@ func RenameTag(oldLabel, newLabel string) (err error) {
|
|||
|
||||
var reloadTreeIDs []string
|
||||
updateNodes := map[string]*ast.Node{}
|
||||
historyDir, err := getHistoryDir(HistoryOpReplace, time.Now())
|
||||
historyDir, err := getHistoryDir(HistoryOpReplace)
|
||||
if nil != err {
|
||||
return
|
||||
}
|
||||
|
||||
for treeID, blocks := range treeBlocks {
|
||||
util.PushEndlessProgress("[" + treeID + "]")
|
||||
|
|
@ -163,7 +168,7 @@ func RenameTag(oldLabel, newLabel string) (err error) {
|
|||
return e
|
||||
}
|
||||
|
||||
generateTreeHistory(historyDir, tree)
|
||||
generateTreeHistory(tree, historyDir)
|
||||
|
||||
for _, blockID := range blocks {
|
||||
node := treenode.GetNodeInTree(tree, blockID)
|
||||
|
|
|
|||
Loading…
Reference in a new issue