From e4e7282939a024e99d05955136fb3da1cd9c6b40 Mon Sep 17 00:00:00 2001 From: porosnicuadrian Date: Tue, 8 Feb 2022 14:13:28 +0200 Subject: [PATCH] Added list/count rates for mongo driver --- apis/rates_it_test.go | 1 - engine/storage_mongo_datadb.go | 22 +++++++++++++++++++++- 2 files changed, 21 insertions(+), 2 deletions(-) diff --git a/apis/rates_it_test.go b/apis/rates_it_test.go index ca91b041d..93445fd49 100644 --- a/apis/rates_it_test.go +++ b/apis/rates_it_test.go @@ -75,7 +75,6 @@ var ( testRateProfileRemoveMultipleRates, testRateProfileSetMultipleRatesInProfile, testRateProfileUpdateProfile, - testRateSKillEngine, } ) diff --git a/engine/storage_mongo_datadb.go b/engine/storage_mongo_datadb.go index 3ac465357..239424859 100644 --- a/engine/storage_mongo_datadb.go +++ b/engine/storage_mongo_datadb.go @@ -1221,7 +1221,27 @@ func (ms *MongoStorage) GetRateProfileDrv(ctx *context.Context, tenant, id strin return utils.NewRateProfileFromMapDataDBMap(tenant, id, mapRP, ms.ms) } -func (ms *MongoStorage) GetRateProfileRateIDsDrv(ctx *context.Context, key, prefix, argsPrefix string) (rateIDs []string, err error) { +func (ms *MongoStorage) GetRateProfileRateIDsDrv(ctx *context.Context, tenant, profileID, prefixArgs string) (rateIDs []string, err error) { + prefix := utils.Rates + utils.ConcatenatedKeySep + if prefixArgs != utils.EmptyString { + prefix = utils.ConcatenatedKey(utils.Rates, prefixArgs) + } + mapRP := make(map[string]interface{}) + err = ms.query(ctx, func(sctx mongo.SessionContext) (err error) { + cur := ms.getCol(ColRpp).FindOne(sctx, bson.M{"tenant": tenant, "id": profileID}) + if err := cur.Decode(mapRP); err != nil { + if err == mongo.ErrNoDocuments { + return utils.ErrNotFound + } + return err + } + return nil + }) + for key := range mapRP { + if strings.HasPrefix(key, prefix) { + rateIDs = append(rateIDs, strings.TrimPrefix(key, utils.Rates+utils.ConcatenatedKeySep)) + } + } return }