Procházet zdrojové kódy

:art: Data History - File history - Assets support `update` operation indexing https://github.com/siyuan-note/siyuan/issues/11177

Daniel před 1 rokem
rodič
revize
dca46b9056
2 změnil soubory, kde provedl 15 přidání a 23 odebrání
  1. 4 1
      kernel/cache/asset.go
  2. 11 22
      kernel/model/history.go

+ 4 - 1
kernel/cache/asset.go

@@ -41,7 +41,10 @@ func GetAssets() (ret map[string]*Asset) {
 	assetsLock.Lock()
 	assetsLock.Lock()
 	defer assetsLock.Unlock()
 	defer assetsLock.Unlock()
 
 
-	ret = assetsCache
+	ret = map[string]*Asset{}
+	for k, v := range assetsCache {
+		ret[k] = v
+	}
 	return
 	return
 }
 }
 
 

+ 11 - 22
kernel/model/history.go

@@ -36,6 +36,7 @@ import (
 	"github.com/siyuan-note/eventbus"
 	"github.com/siyuan-note/eventbus"
 	"github.com/siyuan-note/filelock"
 	"github.com/siyuan-note/filelock"
 	"github.com/siyuan-note/logging"
 	"github.com/siyuan-note/logging"
+	"github.com/siyuan-note/siyuan/kernel/cache"
 	"github.com/siyuan-note/siyuan/kernel/conf"
 	"github.com/siyuan-note/siyuan/kernel/conf"
 	"github.com/siyuan-note/siyuan/kernel/filesys"
 	"github.com/siyuan-note/siyuan/kernel/filesys"
 	"github.com/siyuan-note/siyuan/kernel/search"
 	"github.com/siyuan-note/siyuan/kernel/search"
@@ -480,8 +481,8 @@ func GetNotebookHistory() (ret []*History, err error) {
 }
 }
 
 
 func generateAssetsHistory() {
 func generateAssetsHistory() {
-	files := recentModifiedAssets()
-	if 1 > len(files) {
+	assets := recentModifiedAssets()
+	if 1 > len(assets) {
 		return
 		return
 	}
 	}
 
 
@@ -491,7 +492,7 @@ func generateAssetsHistory() {
 		return
 		return
 	}
 	}
 
 
-	for _, file := range files {
+	for _, file := range assets {
 		historyPath := filepath.Join(historyDir, "assets", strings.TrimPrefix(file, filepath.Join(util.DataDir, "assets")))
 		historyPath := filepath.Join(historyDir, "assets", strings.TrimPrefix(file, filepath.Join(util.DataDir, "assets")))
 		if err = os.MkdirAll(filepath.Dir(historyPath), 0755); nil != err {
 		if err = os.MkdirAll(filepath.Dir(historyPath), 0755); nil != err {
 			logging.LogErrorf("generate history failed: %s", err)
 			logging.LogErrorf("generate history failed: %s", err)
@@ -626,28 +627,16 @@ func (box *Box) recentModifiedDocs() (ret []string) {
 	return
 	return
 }
 }
 
 
-var (
-	assetsUpdated = map[string]int64{}
-)
+var assetsLatestHistoryTime = time.Now().Unix()
 
 
 func recentModifiedAssets() (ret []string) {
 func recentModifiedAssets() (ret []string) {
-	filelock.Walk(filepath.Join(util.DataDir, "assets"), func(path string, info fs.FileInfo, err error) error {
-		if nil == info {
-			return nil
-		}
-
-		if info.IsDir() {
-			return nil
-		}
-
-		updated := info.ModTime().Unix()
-		oldUpdated, ok := assetsUpdated[path]
-		if ok && updated > oldUpdated {
-			ret = append(ret, path)
+	assets := cache.GetAssets()
+	for _, asset := range assets {
+		if asset.Updated > assetsLatestHistoryTime {
+			ret = append(ret, filepath.Join(util.DataDir, asset.Path))
 		}
 		}
-		assetsUpdated[path] = updated
-		return nil
-	})
+	}
+	assetsLatestHistoryTime = time.Now().Unix()
 	return
 	return
 }
 }