diff --git a/changelog/unreleased/filter-hidden-files.md b/changelog/unreleased/filter-hidden-files.md new file mode 100644 index 00000000000..5e69e406b3f --- /dev/null +++ b/changelog/unreleased/filter-hidden-files.md @@ -0,0 +1,7 @@ +Enhancement: Add the "hidden" state to the search index + +We changed the search service to store the "hidden" state of entries in the +search index. That will allow for filtering/searching hidden files in the +future. + +https://github.com/owncloud/ocis/pull/5018 diff --git a/services/search/pkg/search/index/index.go b/services/search/pkg/search/index/index.go index 3a274d1afcf..fd1fb374da2 100644 --- a/services/search/pkg/search/index/index.go +++ b/services/search/pkg/search/index/index.go @@ -56,6 +56,7 @@ type indexDocument struct { Type uint64 Deleted bool + Hidden bool } // Index represents a bleve based search index @@ -297,6 +298,7 @@ func toEntity(ref *sprovider.Reference, ri *sprovider.ResourceInfo) *indexDocume MimeType: ri.MimeType, Type: uint64(ri.Type), Deleted: false, + Hidden: strings.HasPrefix(ri.Path, "."), } if ri.Mtime != nil { @@ -318,6 +320,7 @@ func fieldsToEntity(fields map[string]interface{}) *indexDocument { MimeType: fields["MimeType"].(string), Type: uint64(fields["Type"].(float64)), Deleted: fields["Deleted"].(bool), + Hidden: fields["Hidden"].(bool), } return doc } diff --git a/services/search/pkg/search/index/index_test.go b/services/search/pkg/search/index/index_test.go index 1708b766842..66e363520ac 100644 --- a/services/search/pkg/search/index/index_test.go +++ b/services/search/pkg/search/index/index_test.go @@ -176,6 +176,16 @@ var _ = Describe("Index", func() { assertDocCount(ref.ResourceId, `Name:1234*`, 1) }) + It("filters hidden files", func() { + ri.Path = ".hidden.pdf" + ref.Path = "./" + ri.Path + err := i.Add(ref, ri) + Expect(err).ToNot(HaveOccurred()) + + assertDocCount(ref.ResourceId, `Name:*hidden* +Hidden:T`, 1) + assertDocCount(ref.ResourceId, `Name:*hidden* +Hidden:F`, 0) + }) + Context("with a file in the root of the space", func() { JustBeforeEach(func() { err := i.Add(ref, ri)