🎨 Remove asset content indexes when deleting asset files https://github.com/siyuan-note/siyuan/issues/9010

This commit is contained in:
Daniel 2023-08-20 11:22:48 +08:00
parent 2fae8a008a
commit 2d61568fad
No known key found for this signature in database
GPG key ID: 86211BA83DF03017
3 changed files with 20 additions and 6 deletions

View file

@ -286,10 +286,16 @@ func buildAssetContentOrderBy(orderBy int) string {
var assetContentSearcher = NewAssetsSearcher()
func IndexAssetContent(absPath string) {
func RemoveIndexAssetContent(absPath string) {
defer logging.Recover()
assetsDir := util.GetDataAssetsAbsPath()
p := "assets" + filepath.ToSlash(strings.TrimPrefix(absPath, assetsDir))
sql.DeleteAssetContentsByPathQueue(p)
}
func IndexAssetContent(absPath string) {
defer logging.Recover()
ext := filepath.Ext(absPath)
parser := assetContentSearcher.GetParser(ext)
@ -308,6 +314,7 @@ func IndexAssetContent(absPath string) {
return
}
assetsDir := util.GetDataAssetsAbsPath()
p := "assets" + filepath.ToSlash(strings.TrimPrefix(absPath, assetsDir))
assetContents := []*sql.AssetContent{

View file

@ -75,8 +75,9 @@ func watchAssets() {
timer.Reset(time.Millisecond * 100)
if lastEvent.Op&fsnotify.Rename == fsnotify.Rename {
// 索引资源文件内容
IndexAssetContent(lastEvent.Name)
} else if lastEvent.Op&fsnotify.Remove == fsnotify.Remove {
RemoveIndexAssetContent(lastEvent.Name)
}
case err, ok := <-assetsWatcher.Errors:
if !ok {
@ -93,8 +94,11 @@ func watchAssets() {
// 重新缓存资源文件,以便使用 /资源 搜索
go cache.LoadAssets()
// 索引资源文件内容
IndexAssetContent(lastEvent.Name)
if lastEvent.Op&fsnotify.Remove == fsnotify.Remove {
RemoveIndexAssetContent(lastEvent.Name)
} else {
IndexAssetContent(lastEvent.Name)
}
}
}
}()

View file

@ -60,8 +60,11 @@ func watchAssets() {
// 重新缓存资源文件,以便使用 /资源 搜索
go cache.LoadAssets()
// 索引资源文件内容
IndexAssetContent(event.Path)
if watcher.Remove == event.Op {
RemoveIndexAssetContent(event.Path)
} else {
IndexAssetContent(event.Path)
}
case err, ok := <-assetsWatcher.Error:
if !ok {
return