diff --git a/config/attributescfg.go b/config/attributescfg.go index 1b2fdda31..469f988a7 100644 --- a/config/attributescfg.go +++ b/config/attributescfg.go @@ -19,8 +19,6 @@ along with this program. If not, see package config import ( - "strings" - "github.com/cgrates/birpc/context" "github.com/cgrates/cgrates/utils" ) @@ -49,24 +47,9 @@ func (attrOpts *AttributesOpts) loadFromJSONCfg(jsnCfg *AttributesOptsJson) (err if jsnCfg == nil { return } - for filters, value := range jsnCfg.AttributeIDs { - attrOpts.AttributeIDs = append(attrOpts.AttributeIDs, &utils.DynamicStringSliceOpt{ - FilterIDs: strings.Split(filters, utils.InfieldSep), - Value: value, - }) - } - for filters, value := range jsnCfg.ProcessRuns { - attrOpts.ProcessRuns = append(attrOpts.ProcessRuns, &utils.DynamicIntOpt{ - FilterIDs: strings.Split(filters, utils.InfieldSep), - Value: value, - }) - } - for filters, value := range jsnCfg.ProfileRuns { - attrOpts.ProfileRuns = append(attrOpts.ProfileRuns, &utils.DynamicIntOpt{ - FilterIDs: strings.Split(filters, utils.InfieldSep), - Value: value, - }) - } + attrOpts.AttributeIDs = utils.MapToDynamicStringSliceOpts(jsnCfg.AttributeIDs) + attrOpts.ProcessRuns = utils.MapToDynamicIntOpts(jsnCfg.ProcessRuns) + attrOpts.ProfileRuns = utils.MapToDynamicIntOpts(jsnCfg.ProfileRuns) return } diff --git a/utils/libdynamics.go b/utils/libdynamics.go index 90b2b27ce..29c8388d0 100644 --- a/utils/libdynamics.go +++ b/utils/libdynamics.go @@ -375,6 +375,21 @@ func MapToDynamicBoolOpts(optsMap map[string]bool) (dynOpts []*DynamicBoolOpt) { return } +func MapToDynamicIntOpts(optsMap map[string]int) (dynOpts []*DynamicIntOpt) { + dynOpts = make([]*DynamicIntOpt, 0, len(optsMap)) + for filters, opt := range optsMap { + var filterIDs []string + if filters != EmptyString { + filterIDs = strings.Split(filters, InfieldSep) + } + dynOpts = append(dynOpts, &DynamicIntOpt{ + FilterIDs: filterIDs, + Value: opt, + }) + } + return +} + func MapToDynamicDecimalBigOpts(optsMap map[string]string) (dynOpts []*DynamicDecimalBigOpt, err error) { dynOpts = make([]*DynamicDecimalBigOpt, 0, len(optsMap)) for filters, opt := range optsMap { @@ -444,6 +459,7 @@ func MapToDynamicInterfaceOpts(optsMap map[string]string) (dynOpts []*DynamicInt } func CloneDecimalBig(in *decimal.Big) (cln *decimal.Big) { - *cln = *in + cln = new(decimal.Big) + cln.Copy(in) return }