Modifed GetFilters API

This commit is contained in:
andronache98
2022-01-12 11:10:31 +02:00
committed by Dan Christian Bogos
parent ff143cf5aa
commit 6ef657da5a
2 changed files with 21 additions and 29 deletions

View File

@@ -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

View File

@@ -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",