|
@@ -37,6 +37,7 @@ import (
|
|
|
"github.com/gabriel-vasile/mimetype"
|
|
|
"github.com/siyuan-note/filelock"
|
|
|
"github.com/siyuan-note/httpclient"
|
|
|
+ "github.com/siyuan-note/siyuan/kernel/cache"
|
|
|
"github.com/siyuan-note/siyuan/kernel/search"
|
|
|
"github.com/siyuan-note/siyuan/kernel/sql"
|
|
|
"github.com/siyuan-note/siyuan/kernel/treenode"
|
|
@@ -161,25 +162,32 @@ func NetImg2LocalAssets(rootID string) (err error) {
|
|
|
return
|
|
|
}
|
|
|
|
|
|
-type Asset struct {
|
|
|
- HName string `json:"hName"`
|
|
|
- Name string `json:"name"`
|
|
|
- Path string `json:"path"`
|
|
|
-}
|
|
|
+func SearchAssetsByName(keyword string) (ret []*cache.Asset) {
|
|
|
+ ret = []*cache.Asset{}
|
|
|
|
|
|
-func SearchAssetsByName(keyword string) (ret []*Asset) {
|
|
|
- ret = []*Asset{}
|
|
|
- sqlAssets := sql.QueryAssetsByName(keyword)
|
|
|
- for _, sqlAsset := range sqlAssets {
|
|
|
- hName := util.RemoveID(sqlAsset.Name)
|
|
|
- _, hName = search.MarkText(hName, keyword, 64, Conf.Search.CaseSensitive)
|
|
|
- asset := &Asset{
|
|
|
- HName: hName,
|
|
|
- Name: sqlAsset.Name,
|
|
|
- Path: sqlAsset.Path,
|
|
|
+ count := 0
|
|
|
+ cache.Assets.Range(func(k, v interface{}) bool {
|
|
|
+ asset := v.(*cache.Asset)
|
|
|
+ if !strings.Contains(strings.ToLower(asset.HName), strings.ToLower(keyword)) {
|
|
|
+ return true
|
|
|
}
|
|
|
- ret = append(ret, asset)
|
|
|
- }
|
|
|
+
|
|
|
+ _, hName := search.MarkText(asset.HName, keyword, 64, Conf.Search.CaseSensitive)
|
|
|
+ ret = append(ret, &cache.Asset{
|
|
|
+ HName: hName,
|
|
|
+ Path: asset.Path,
|
|
|
+ Updated: asset.Updated,
|
|
|
+ })
|
|
|
+ count++
|
|
|
+ if Conf.Search.Limit <= count {
|
|
|
+ return false
|
|
|
+ }
|
|
|
+ return true
|
|
|
+ })
|
|
|
+
|
|
|
+ sort.Slice(ret, func(i, j int) bool {
|
|
|
+ return ret[i].Updated > ret[j].Updated
|
|
|
+ })
|
|
|
return
|
|
|
}
|
|
|
|