From 65c2e9c18c66369291e954bdfa860088e859cb12 Mon Sep 17 00:00:00 2001 From: Trial97 Date: Wed, 27 Nov 2019 13:57:39 +0200 Subject: [PATCH] Updated V1RateCDRs --- apier/v2/cdrs_it_test.go | 4 ++-- engine/cdrs.go | 42 ++++++++++++++++++++-------------------- 2 files changed, 23 insertions(+), 23 deletions(-) diff --git a/apier/v2/cdrs_it_test.go b/apier/v2/cdrs_it_test.go index 780c6c2d1..ea00aa8b4 100644 --- a/apier/v2/cdrs_it_test.go +++ b/apier/v2/cdrs_it_test.go @@ -270,7 +270,7 @@ func testV2CDRsRateCDRs(t *testing.T) { if err := cdrsRpc.Call(utils.CDRsV1RateCDRs, &engine.ArgRateCDRs{ RPCCDRsFilter: utils.RPCCDRsFilter{NotRunIDs: []string{utils.MetaRaw}}, - ChargerS: utils.BoolPointer(true), + Flags: []string{"*chargers:true"}, }, &reply); err != nil { t.Error("Unexpected error: ", err.Error()) } else if reply != utils.OK { @@ -646,7 +646,7 @@ func testV2CDRsRateCDRsWithRatingPlan(t *testing.T) { if err := cdrsRpc.Call(utils.CDRsV1RateCDRs, &engine.ArgRateCDRs{ RPCCDRsFilter: utils.RPCCDRsFilter{NotRunIDs: []string{utils.MetaRaw}, Accounts: []string{"testV2CDRsProcessCDR4"}}, - ChargerS: utils.BoolPointer(true), + Flags: []string{"*chargers:true"}, }, &reply); err != nil { t.Error("Unexpected error: ", err.Error()) } else if reply != utils.OK { diff --git a/engine/cdrs.go b/engine/cdrs.go index 63bbb138b..d1ac1d4ba 100644 --- a/engine/cdrs.go +++ b/engine/cdrs.go @@ -889,12 +889,8 @@ func (cdrS *CDRServer) V2StoreSessionCost(args *ArgsV2CDRSStoreSMCost, reply *st } type ArgRateCDRs struct { + Flags []string utils.RPCCDRsFilter - ChargerS *bool - Store *bool - Export *bool // Replicate results - ThresholdS *bool - StatS *bool // Set to true if the CDRs should be sent to stats server *utils.ArgDispatcher *utils.TenantArg } @@ -902,35 +898,39 @@ type ArgRateCDRs struct { // V1RateCDRs is used for re-/rate CDRs which are already stored within StorDB // FixMe: add RPC caching func (cdrS *CDRServer) V1RateCDRs(arg *ArgRateCDRs, reply *string) (err error) { - cdrFltr, err := arg.RPCCDRsFilter.AsCDRsFilter(cdrS.cgrCfg.GeneralCfg().DefaultTimezone) - if err != nil { + var cdrFltr *utils.CDRsFilter + if cdrFltr, err = arg.RPCCDRsFilter.AsCDRsFilter(cdrS.cgrCfg.GeneralCfg().DefaultTimezone); err != nil { return utils.NewErrServerError(err) } cdrs, _, err := cdrS.cdrDb.GetCDRs(cdrFltr, false) if err != nil { - return err + return + } + var flgs utils.FlagsWithParams + if flgs, err = utils.FlagsWithParamsFromSlice(arg.Flags); err != nil { + return } store := cdrS.cgrCfg.CdrsCfg().StoreCdrs - if arg.Store != nil { - store = *arg.Store + if flgs.HasKey(utils.MetaStore) { + store = flgs.GetBool(utils.MetaStore) } export := len(cdrS.cgrCfg.CdrsCfg().OnlineCDRExports) != 0 - if arg.Export != nil { - export = *arg.Export + if flgs.HasKey(utils.MetaExport) { + export = flgs.GetBool(utils.MetaExport) } thdS := cdrS.thdS != nil - if arg.ThresholdS != nil { - thdS = *arg.ThresholdS + if flgs.HasKey(utils.MetaThresholds) { + thdS = flgs.GetBool(utils.MetaThresholds) } statS := cdrS.statS != nil - if arg.StatS != nil { - statS = *arg.StatS + if flgs.HasKey(utils.MetaStatS) { + statS = flgs.GetBool(utils.MetaStatS) } - for _, cdr := range cdrs { - if arg.ChargerS != nil && *arg.ChargerS { - if cdrS.chargerS == nil { - return utils.NewErrNotConnected(utils.ChargerS) - } + if flgs.GetBool(utils.MetaChargers) { + if cdrS.chargerS == nil { + return utils.NewErrNotConnected(utils.ChargerS) + } + for _, cdr := range cdrs { argCharger := &utils.CGREventWithArgDispatcher{ CGREvent: cdr.AsCGREvent(), ArgDispatcher: arg.ArgDispatcher,