From 528bc38c16539493d04ea220e9845b5b4bebf1ec Mon Sep 17 00:00:00 2001 From: ionutboangiu Date: Mon, 11 Oct 2021 17:54:20 +0300 Subject: [PATCH] Add conversion functions for DynDurationOpts and DynDecimalOpts --- utils/libdynamics.go | 68 ++++++++++++++++++++++++++++++++++++++------ 1 file changed, 60 insertions(+), 8 deletions(-) diff --git a/utils/libdynamics.go b/utils/libdynamics.go index 129711356..14658ad6e 100644 --- a/utils/libdynamics.go +++ b/utils/libdynamics.go @@ -25,43 +25,51 @@ import ( ) type DynamicStringSliceOpt struct { - Value []string + Tenant string FilterIDs []string + Value []string } type DynamicStringOpt struct { - Value string + Tenant string FilterIDs []string + Value string } type DynamicIntOpt struct { - Value int + Tenant string FilterIDs []string + Value int } type DynamicFloat64Opt struct { - Value float64 + Tenant string FilterIDs []string + Value float64 } type DynamicBoolOpt struct { - Value bool + Tenant string FilterIDs []string + Value bool } type DynamicDurationOpt struct { - Value time.Duration + Tenant string FilterIDs []string + Value time.Duration } type DynamicDecimalBigOpt struct { - Value *decimal.Big + Tenant string FilterIDs []string + Value *decimal.Big } type DynamicInterfaceOpt struct { - Value interface{} + Tenant string FilterIDs []string + Value interface{} } func CloneDynamicStringSliceOpt(in []*DynamicStringSliceOpt) (cl []*DynamicStringSliceOpt) { @@ -462,3 +470,47 @@ func CloneDecimalBig(in *decimal.Big) (cln *decimal.Big) { cln.Copy(in) return } + +func StringToDecimalBigDynamicOpts(strOpts []*DynamicStringOpt) (decOpts []*DynamicDecimalBigOpt, err error) { + decOpts = make([]*DynamicDecimalBigOpt, len(strOpts)) + for index, opt := range strOpts { + decOpts[index].Tenant = opt.Tenant + decOpts[index].FilterIDs = opt.FilterIDs + if decOpts[index].Value, err = StringAsBig(opt.Value); err != nil { + return + } + } + return +} + +func DecimalBigToStringDynamicOpts(decOpts []*DynamicDecimalBigOpt) (strOpts []*DynamicStringOpt) { + strOpts = make([]*DynamicStringOpt, len(decOpts)) + for index, opt := range decOpts { + strOpts[index].Tenant = opt.Tenant + strOpts[index].FilterIDs = opt.FilterIDs + strOpts[index].Value = opt.Value.String() + } + return +} + +func StringToDurationDynamicOpts(strOpts []*DynamicStringOpt) (durOpts []*DynamicDurationOpt, err error) { + durOpts = make([]*DynamicDurationOpt, len(strOpts)) + for index, opt := range strOpts { + durOpts[index].Tenant = opt.Tenant + durOpts[index].FilterIDs = opt.FilterIDs + if durOpts[index].Value, err = ParseDurationWithNanosecs(opt.Value); err != nil { + return + } + } + return +} + +func DurationToStringDynamicOpts(durOpts []*DynamicDurationOpt) (strOpts []*DynamicStringOpt, err error) { + strOpts = make([]*DynamicStringOpt, len(durOpts)) + for index, opt := range durOpts { + strOpts[index].Tenant = opt.Tenant + strOpts[index].FilterIDs = opt.FilterIDs + strOpts[index].Value = opt.Value.String() + } + return +}