From df5adc6c9614f77f9fe4d3c7216c07d3df175b0e Mon Sep 17 00:00:00 2001 From: Trial97 Date: Thu, 18 Nov 2021 16:52:45 +0200 Subject: [PATCH] Updated account interface --- engine/action_plan.go | 2 +- engine/action_trigger.go | 2 +- engine/balances.go | 7 +++++++ engine/dynamicdp.go | 5 ++--- engine/loader_csv_test.go | 2 +- engine/rateinterval.go | 4 ---- general_tests/objectdp_test.go | 9 ++++----- utils/consts.go | 1 + 8 files changed, 17 insertions(+), 15 deletions(-) diff --git a/engine/action_plan.go b/engine/action_plan.go index ddc2b4536..1ac9db185 100644 --- a/engine/action_plan.go +++ b/engine/action_plan.go @@ -220,7 +220,7 @@ func (at *ActionTiming) Execute(fltrS *FilterS) (err error) { // check action filter if len(a.Filters) > 0 { if pass, err := fltrS.Pass(utils.NewTenantID(accID).Tenant, a.Filters, - utils.MapStorage{utils.MetaReq: config.NewObjectDP(acc)}); err != nil { + utils.MapStorage{utils.MetaReq: acc}); err != nil { return err } else if !pass { continue diff --git a/engine/action_trigger.go b/engine/action_trigger.go index 430385841..b4526071d 100644 --- a/engine/action_trigger.go +++ b/engine/action_trigger.go @@ -70,7 +70,7 @@ func (at *ActionTrigger) Execute(ub *Account, fltrS *FilterS) (err error) { // check action filter if len(a.Filters) > 0 { if pass, err := fltrS.Pass(utils.NewTenantID(a.Id).Tenant, a.Filters, - utils.MapStorage{utils.MetaReq: config.NewObjectDP(ub)}); err != nil { + utils.MapStorage{utils.MetaReq: ub}); err != nil { return err } else if !pass { continue diff --git a/engine/balances.go b/engine/balances.go index fb0d1fa93..7c5620749 100644 --- a/engine/balances.go +++ b/engine/balances.go @@ -1107,6 +1107,13 @@ func (bc Balances) FieldAsInterface(fldPath []string) (val interface{}, err erro if bc == nil || len(fldPath) == 0 { return nil, utils.ErrNotFound } + + if fldPath[0] == utils.GetTotalValue { + if len(fldPath) != 1 { + return nil, utils.ErrNotFound + } + return bc.GetTotalValue(), nil + } for _, at := range bc { if at.ID == fldPath[0] { if len(fldPath) == 1 { diff --git a/engine/dynamicdp.go b/engine/dynamicdp.go index 2ef9118ed..5254696e6 100644 --- a/engine/dynamicdp.go +++ b/engine/dynamicdp.go @@ -96,9 +96,8 @@ func (dDP *dynamicDP) fieldAsInterface(fldPath []string) (val interface{}, err e return } //construct dataProvider from account and set it further - dp := config.NewObjectDP(account) - dDP.cache.Set(fldPath[:2], dp) - return dp.FieldAsInterface(fldPath[2:]) + dDP.cache.Set(fldPath[:2], account) + return account.FieldAsInterface(fldPath[2:]) case utils.MetaResources: // sample of fieldName : ~*resources.ResourceID.Field var reply ResourceWithConfig diff --git a/engine/loader_csv_test.go b/engine/loader_csv_test.go index 355c3cf0f..79f57e48f 100644 --- a/engine/loader_csv_test.go +++ b/engine/loader_csv_test.go @@ -600,7 +600,7 @@ func TestLoadRatingPlans(t *testing.T) { } if !reflect.DeepEqual(csvr.ratingPlans["ANY_PLAN"].Timings["b9b78731"], anyTiming) { - t.Errorf("Error using *any timing in rating plans: %+v : %+v", csvr.ratingPlans["ANY_PLAN"].Timings["b9b78731"], anyTiming) + t.Errorf("Error using *any timing in rating plans: %+v : %+v", utils.ToJSON(csvr.ratingPlans["ANY_PLAN"].Timings["b9b78731"]), utils.ToJSON(anyTiming)) } } diff --git a/engine/rateinterval.go b/engine/rateinterval.go index 5c30a5a2e..2c429c254 100644 --- a/engine/rateinterval.go +++ b/engine/rateinterval.go @@ -529,10 +529,6 @@ func (r *RGRate) Clone() (cln *RGRate) { return } -func (rit *RITiming) String() string { - return utils.ToJSON(rit) -} - func (rit *RITiming) FieldAsInterface(fldPath []string) (val interface{}, err error) { if rit == nil || len(fldPath) == 0 { return nil, utils.ErrNotFound diff --git a/general_tests/objectdp_test.go b/general_tests/objectdp_test.go index 808da06a6..d46115784 100644 --- a/general_tests/objectdp_test.go +++ b/general_tests/objectdp_test.go @@ -20,7 +20,6 @@ package general_tests import ( "testing" - "github.com/cgrates/cgrates/config" "github.com/cgrates/cgrates/engine" "github.com/cgrates/cgrates/utils" ) @@ -37,18 +36,18 @@ func TestAccountNewObjectDPFieldAsInterface(t *testing.T) { }, }, } - accDP := config.NewObjectDP(acc) + accDP := acc if data, err := accDP.FieldAsInterface([]string{"BalanceMap", "*monetary[0]", "Value"}); err != nil { t.Error(err) } else if data != 20. { t.Errorf("Expected: %+v ,received: %+v", 20., data) } if _, err := accDP.FieldAsInterface([]string{"BalanceMap", "*monetary[1]", "Value"}); err == nil || - err.Error() != "index out of range" { + err.Error() != utils.ErrNotFound.Error() { t.Error(err) } if _, err := accDP.FieldAsInterface([]string{"BalanceMap", "*monetary[0]", "InexistentField"}); err == nil || - err != utils.ErrNotFound { + err.Error() != `unsupported field prefix: ` { t.Error(err) } } @@ -65,7 +64,7 @@ func TestAccountNewObjectDPFieldAsInterfaceFromCache(t *testing.T) { }, }, } - accDP := config.NewObjectDP(acc) + accDP := acc if data, err := accDP.FieldAsInterface([]string{"BalanceMap", "*monetary[0]", "Value"}); err != nil { t.Error(err) diff --git a/utils/consts.go b/utils/consts.go index 1c5f2c693..b8528b1e6 100644 --- a/utils/consts.go +++ b/utils/consts.go @@ -858,6 +858,7 @@ const ( Method = "Method" Static = "Static" Params = "Params" + GetTotalValue = "GetTotalValue" Increment = "Increment" FixedFee = "FixedFee" RecurrentFee = "RecurrentFee"