From f0ebe80a78e3a6ced9969e46bab936fd64544af9 Mon Sep 17 00:00:00 2001 From: Leonard Lyubich Date: Thu, 17 Dec 2020 18:48:09 +0300 Subject: [PATCH] [#231] object/search: Implement method to add search filter by type Signed-off-by: Leonard Lyubich --- pkg/object/search.go | 5 +++++ pkg/object/search_test.go | 17 +++++++++++++++++ 2 files changed, 22 insertions(+) diff --git a/pkg/object/search.go b/pkg/object/search.go index d23b3df..5d59e1a 100644 --- a/pkg/object/search.go +++ b/pkg/object/search.go @@ -240,3 +240,8 @@ func (f *SearchFilters) AddObjectIDFilter(m SearchMatchType, id *ID) { func (f *SearchFilters) AddSplitIDFilter(m SearchMatchType, id *SplitID) { f.addReservedFilter(m, fKeySplitID, id) } + +// AddTypeFilter adds filter by object type. +func (f *SearchFilters) AddTypeFilter(m SearchMatchType, typ Type) { + f.addReservedFilter(m, fKeyType, typ) +} diff --git a/pkg/object/search_test.go b/pkg/object/search_test.go index f477f4f..82a06d3 100644 --- a/pkg/object/search_test.go +++ b/pkg/object/search_test.go @@ -140,3 +140,20 @@ func TestSearchFilters_AddSplitIDFilter(t *testing.T) { require.Equal(t, v2object.MatchStringEqual, fsV2[0].GetMatchType()) }) } + +func TestSearchFilters_AddTypeFilter(t *testing.T) { + typ := object.TypeTombstone + + fs := new(object.SearchFilters) + fs.AddTypeFilter(object.MatchStringEqual, typ) + + t.Run("v2", func(t *testing.T) { + fsV2 := fs.ToV2() + + require.Len(t, fsV2, 1) + + require.Equal(t, v2object.FilterHeaderObjectType, fsV2[0].GetKey()) + require.Equal(t, typ.String(), fsV2[0].GetValue()) + require.Equal(t, v2object.MatchStringEqual, fsV2[0].GetMatchType()) + }) +}