From f931053650128c0083ca5f5b96b6f4e5e0b0299c Mon Sep 17 00:00:00 2001 From: Bel LaPointe Date: Thu, 29 Jul 2021 07:14:33 -0600 Subject: [PATCH] search file names first --- notes/search.go | 19 ++++++++++++++++--- notes/search_test.go | 2 +- 2 files changed, 17 insertions(+), 4 deletions(-) diff --git a/notes/search.go b/notes/search.go index 09be110..c33f51f 100755 --- a/notes/search.go +++ b/notes/search.go @@ -3,6 +3,7 @@ package notes import ( "bufio" "errors" + "io" "local/notes-server/filetree" "log" "os" @@ -51,6 +52,7 @@ func (n *Notes) Search(phrase string) (string, error) { if err != nil { return "", err } + perffiles := filetree.NewFiles() files := filetree.NewFiles() err = filepath.Walk(n.root, func(walked string, info os.FileInfo, err error) error { @@ -60,6 +62,11 @@ func (n *Notes) Search(phrase string) (string, error) { if !info.Mode().IsRegular() { return nil } + p := filetree.NewPathFromLocal(path.Dir(walked)) + if ok, _ := searcher.stream(strings.NewReader(info.Name())); ok { + perffiles.Push(p, info) + return nil + } if size := info.Size(); size < 1 || size > (5*1024*1024) { return nil } @@ -70,13 +77,15 @@ func (n *Notes) Search(phrase string) (string, error) { if err != nil { log.Printf("failed to scan %v: %v", walked, err) } else if ok { - p := filetree.NewPathFromLocal(path.Dir(walked)) files.Push(p, info) } return err }, ) - return filetree.Paths(*files).List(true), err + for _, file := range *files { + *perffiles = append(*perffiles, file) + } + return filetree.Paths(*perffiles).List(true), err } func (searcher *searcher) file(file string) (bool, error) { @@ -91,7 +100,11 @@ func (searcher *searcher) file(file string) (bool, error) { return false, err } defer f.Close() - scanner := bufio.NewScanner(f) + return searcher.stream(f) +} + +func (searcher *searcher) stream(r io.Reader) (bool, error) { + scanner := bufio.NewScanner(r) for scanner.Scan() { if searcher.matches(scanner.Bytes()) { return true, scanner.Err() diff --git a/notes/search_test.go b/notes/search_test.go index 5660eca..f395cce 100755 --- a/notes/search_test.go +++ b/notes/search_test.go @@ -34,7 +34,7 @@ func TestSearch(t *testing.T) { t.Fatal(v, result) } - result, err = n.Search("4") + result, err = n.Search("number.4") if err != nil { t.Fatal(err) }