diff --git a/apis/filters.go b/apis/filters.go index 415bf1c88..f86cd6087 100644 --- a/apis/filters.go +++ b/apis/filters.go @@ -87,36 +87,18 @@ func (adms *AdminSv1) GetFilters(ctx *context.Context, args *utils.ArgsItemIDs, if tnt == utils.EmptyString { tnt = adms.cfg.GeneralCfg().DefaultTenant } - prfx := utils.FilterPrefix + tnt + utils.ConcatenatedKeySep - lenPrfx := len(prfx) - prfx += args.ItemsPrefix - var keys []string - if keys, err = adms.dm.DataDB().GetKeysForPrefix(ctx, prfx); err != nil { - return - } - if len(keys) == 0 { - return utils.ErrNotFound - } - retIDs := make([]string, len(keys)) - for i, key := range keys { - retIDs[i] = key[lenPrfx:] - } - var limit, offset, maxItems int - if limit, offset, maxItems, err = utils.GetPaginateOpts(args.APIOpts); err != nil { - return - } var fltrIDs []string - fltrIDs, err = utils.Paginate(retIDs, limit, offset, maxItems) + err = adms.GetFilterIDs(ctx, args, &fltrIDs) if err != nil { return } + *reply = make([]*engine.Filter, 0, len(fltrIDs)) for _, fltrID := range fltrIDs { var fltr *engine.Filter if fltr, err = adms.dm.GetFilter(ctx, tnt, fltrID, true, true, utils.NonTransactional); err != nil { return utils.APIErrorHandler(err) } else { - fltrs := append(*reply, fltr) - *reply = fltrs + *reply = append(*reply, fltr) } } return diff --git a/apis/filters_it_test.go b/apis/filters_it_test.go index 4883747fe..0f7ea935e 100644 --- a/apis/filters_it_test.go +++ b/apis/filters_it_test.go @@ -48,6 +48,7 @@ var ( testFilterSStartEngine, testFilterSRPCConn, testFilterSGetFltrBeforeSet, + testFilterSGetFiltersBeforeSet, testFilterSSetFltr, testFilterSGetFilterIDs, testFilterSGetFilters, @@ -131,6 +132,15 @@ func testFilterSGetFltrBeforeSet(t *testing.T) { } } +func testFilterSGetFiltersBeforeSet(t *testing.T) { + var reply *[]*engine.Filter + args := &utils.ArgsItemIDs{} + if err := fltrSRPC.Call(context.Background(), utils.AdminSv1GetFilters, + args, &reply); err == nil || err.Error() != utils.ErrNotFound.Error() { + t.Errorf("Expected %+v \n, received %+v", utils.ErrNotFound, err) + } +} + func testFilterSSetFltr(t *testing.T) { fltrPrf := &engine.FilterWithAPIOpts{ Filter: &engine.Filter{ @@ -209,9 +219,9 @@ func testFilterSGetFilterIDs(t *testing.T) { } func testFilterSGetFilters(t *testing.T) { - var reply *[]engine.Filter + var reply *[]*engine.Filter args := &utils.ArgsItemIDs{} - expectedFltr := &[]engine.Filter{ + expectedFltr := &[](*engine.Filter){ { Tenant: utils.CGRateSorg, ID: "fltr_for_attr", @@ -352,9 +362,9 @@ func testFilterSGetFilterSIDs2(t *testing.T) { } func testFilterSGetFilters2(t *testing.T) { - var reply *[]engine.Filter + var reply *[]*engine.Filter args := &utils.ArgsItemIDs{} - expectedFltr := &[]engine.Filter{ + expectedFltr := &[](*engine.Filter){ { Tenant: utils.CGRateSorg, ID: "fltr_for_attr", @@ -516,9 +526,9 @@ func testFilterSSetFilterS3(t *testing.T) { } func testFilterSGetFilters3(t *testing.T) { - var reply *[]engine.Filter + var reply *[]*engine.Filter args := &utils.ArgsItemIDs{} - expectedFltr := &[]engine.Filter{ + expectedFltr := &[](*engine.Filter){ { Tenant: utils.CGRateSorg, ID: "fltr_for_attr2", @@ -639,11 +649,11 @@ func testFilterSSetGetFilterWithPrefix(t *testing.T) { } func testFilterSGetFiltersWithPrefix(t *testing.T) { - var reply *[]engine.Filter + var reply *[]*engine.Filter args := &utils.ArgsItemIDs{ ItemsPrefix: "afltr", } - expectedFltr := &[]engine.Filter{ + expectedFltr := &[](*engine.Filter){ { Tenant: utils.CGRateSorg, ID: "afltr_for_attr",