diff --git a/accounts/libaccounts.go b/accounts/libaccounts.go
index 282325baa..ec9303a2f 100644
--- a/accounts/libaccounts.go
+++ b/accounts/libaccounts.go
@@ -21,6 +21,7 @@ package accounts
import (
"errors"
"fmt"
+ "slices"
"github.com/cgrates/birpc/context"
"github.com/cgrates/cgrates/config"
@@ -115,7 +116,7 @@ func rateSCostForEvent(ctx *context.Context, connMgr *engine.ConnManager, cgrEv
return nil, utils.NewErrNotConnected(utils.RateS)
}
tmp := cgrEv.APIOpts[utils.OptsRatesProfileIDs]
- cgrEv.APIOpts[utils.OptsRatesProfileIDs] = utils.CloneStringSlice(rpIDs)
+ cgrEv.APIOpts[utils.OptsRatesProfileIDs] = slices.Clone(rpIDs)
var tmpReply utils.RateProfileCost
err = connMgr.Call(ctx, rateSConns, utils.RateSv1CostForEvent,
cgrEv, &tmpReply)
diff --git a/agents/agentreq.go b/agents/agentreq.go
index b2745264f..25d1f1007 100644
--- a/agents/agentreq.go
+++ b/agents/agentreq.go
@@ -20,6 +20,7 @@ package agents
import (
"fmt"
+ "slices"
"strings"
"github.com/cgrates/birpc/context"
@@ -230,7 +231,7 @@ func (ar *AgentRequest) SetFields(tplFlds []*config.FCTemplate) (err error) {
return
} else if fullPath == nil { // no dynamic path
fullPath = &utils.FullPath{
- PathSlice: utils.CloneStringSlice(tplFld.GetPathSlice()), // need to clone so me do not modify the template
+ PathSlice: slices.Clone(tplFld.GetPathSlice()), // need to clone so me do not modify the template
Path: tplFld.Path,
}
}
@@ -321,14 +322,14 @@ func (ar *AgentRequest) Remove(fullPath *utils.FullPath) error {
default:
return fmt.Errorf("unsupported field prefix: <%s> when set fields", fullPath.PathSlice[0])
case utils.MetaVars:
- return ar.Vars.Remove(utils.CloneStringSlice(fullPath.PathSlice[1:]))
+ return ar.Vars.Remove(slices.Clone(fullPath.PathSlice[1:]))
case utils.MetaCgreq:
return ar.CGRRequest.Remove(&utils.FullPath{
PathSlice: fullPath.PathSlice[1:],
Path: fullPath.Path[7:],
})
case utils.MetaCgrep:
- return ar.CGRReply.Remove(utils.CloneStringSlice(fullPath.PathSlice[1:]))
+ return ar.CGRReply.Remove(slices.Clone(fullPath.PathSlice[1:]))
case utils.MetaRep:
return ar.Reply.Remove(&utils.FullPath{
PathSlice: fullPath.PathSlice[1:],
@@ -340,7 +341,7 @@ func (ar *AgentRequest) Remove(fullPath *utils.FullPath) error {
Path: fullPath.Path[9:],
})
case utils.MetaTmp:
- return ar.tmp.Remove(utils.CloneStringSlice(fullPath.PathSlice[1:]))
+ return ar.tmp.Remove(slices.Clone(fullPath.PathSlice[1:]))
case utils.MetaOpts:
return ar.Opts.Remove(fullPath.PathSlice[1:])
case utils.MetaUCH:
diff --git a/agents/fsevent.go b/agents/fsevent.go
index c34b2d3e6..536d8be21 100644
--- a/agents/fsevent.go
+++ b/agents/fsevent.go
@@ -20,6 +20,7 @@ package agents
import (
"fmt"
+ "slices"
"strconv"
"strings"
"time"
@@ -230,7 +231,7 @@ func (fsev FSEvent) GetDuration(fieldName string) (time.Duration, error) {
func (fsev FSEvent) GetPdd(fieldName string) (time.Duration, error) {
var PDDStr string
- if utils.SliceHasMember([]string{utils.MetaDefault, utils.PDD}, fieldName) {
+ if slices.Contains([]string{utils.MetaDefault, utils.PDD}, fieldName) {
PDDStr = utils.FirstNonEmpty(fsev[PDD_MEDIA_MS], fsev[PDD_NOMEDIA_MS])
if len(PDDStr) != 0 {
PDDStr = PDDStr + "ms" // PDD is in milliseconds and CGR expects it in seconds
@@ -245,7 +246,7 @@ func (fsev FSEvent) GetPdd(fieldName string) (time.Duration, error) {
func (fsev FSEvent) GetADC(fieldName string) (time.Duration, error) {
var ACDStr string
- if utils.SliceHasMember([]string{utils.MetaDefault, utils.ACD}, fieldName) {
+ if slices.Contains([]string{utils.MetaDefault, utils.ACD}, fieldName) {
ACDStr = utils.FirstNonEmpty(fsev[VarCGRACD])
if len(ACDStr) != 0 {
ACDStr = ACDStr + "s" // ACD is in seconds and CGR expects it in seconds
diff --git a/agents/kamevent.go b/agents/kamevent.go
index 0321e0d5d..e5173e7ed 100644
--- a/agents/kamevent.go
+++ b/agents/kamevent.go
@@ -20,6 +20,7 @@ package agents
import (
"encoding/json"
+ "slices"
"strings"
"github.com/cgrates/cgrates/config"
@@ -85,12 +86,12 @@ type KamEvent map[string]string
func (kev KamEvent) MissingParameter() bool {
switch kev[EVENT] {
case CGR_AUTH_REQUEST:
- return utils.IsSliceMember([]string{
+ return slices.Contains([]string{
kev[KamTRIndex],
kev[KamTRLabel],
}, "")
case CGR_CALL_START:
- return utils.IsSliceMember([]string{
+ return slices.Contains([]string{
kev[KamHashEntry],
kev[KamHashID],
kev[utils.OriginID],
@@ -99,7 +100,7 @@ func (kev KamEvent) MissingParameter() bool {
kev[utils.Destination],
}, "")
case CGR_CALL_END:
- return utils.IsSliceMember([]string{
+ return slices.Contains([]string{
kev[utils.OriginID],
kev[utils.AnswerTime],
kev[utils.AccountField],
@@ -117,10 +118,10 @@ func (kev KamEvent) MissingParameter() bool {
kev[utils.AccountField],
kev[utils.Destination])
}
- return utils.IsSliceMember(mndPrm, "")
+ return slices.Contains(mndPrm, "")
case CGR_PROCESS_CDR:
// TRIndex and TRLabel must exist in order to know where to send back the response
- return utils.IsSliceMember([]string{
+ return slices.Contains([]string{
kev[KamTRIndex],
kev[KamTRLabel],
kev[utils.OriginID],
diff --git a/apis/actions_it_test.go b/apis/actions_it_test.go
index c061d9582..529089386 100644
--- a/apis/actions_it_test.go
+++ b/apis/actions_it_test.go
@@ -27,6 +27,7 @@ import (
"net/http/httptest"
"path"
"reflect"
+ "slices"
"sort"
"testing"
"time"
@@ -678,7 +679,7 @@ func testActionsRemoveActionProfiles(t *testing.T) {
t.Fatal(err)
} else {
sort.Strings(actionProfileIDs)
- if !utils.SliceStringEqual(actionProfileIDs, expected) {
+ if !slices.Equal(actionProfileIDs, expected) {
t.Errorf("expected: <%+v>, \nreceived: <%+v>", expected, actionProfileIDs)
}
}
diff --git a/apis/attributes_it_test.go b/apis/attributes_it_test.go
index f12b546d7..0b1bc3efa 100644
--- a/apis/attributes_it_test.go
+++ b/apis/attributes_it_test.go
@@ -24,6 +24,7 @@ package apis
import (
"path"
"reflect"
+ "slices"
"sort"
"testing"
"time"
@@ -373,7 +374,7 @@ func testAttributesGetAttributeProfileIDsAfterSet(t *testing.T) {
t.Error(err)
} else {
sort.Strings(replyAttributeProfileIDs)
- if !utils.SliceStringEqual(replyAttributeProfileIDs, expectedIDs) {
+ if !slices.Equal(replyAttributeProfileIDs, expectedIDs) {
t.Errorf("expected: <%+v>, \nreceived: <%+v>", expectedIDs, replyAttributeProfileIDs)
}
}
@@ -387,7 +388,7 @@ func testAttributesGetAttributeProfileIDsAfterSet(t *testing.T) {
t.Error(err)
} else {
sort.Strings(replyAttributeProfileIDs)
- if !utils.SliceStringEqual(replyAttributeProfileIDs, expectedIDs) {
+ if !slices.Equal(replyAttributeProfileIDs, expectedIDs) {
t.Errorf("expected: <%+v>, \nreceived: <%+v>", expectedIDs, replyAttributeProfileIDs)
}
}
@@ -401,7 +402,7 @@ func testAttributesGetAttributeProfileIDsAfterSet(t *testing.T) {
t.Error(err)
} else {
sort.Strings(replyAttributeProfileIDs)
- if !utils.SliceStringEqual(replyAttributeProfileIDs, expectedIDs) {
+ if !slices.Equal(replyAttributeProfileIDs, expectedIDs) {
t.Errorf("expected: <%+v>, \nreceived: <%+v>", expectedIDs, replyAttributeProfileIDs)
}
}
@@ -595,7 +596,7 @@ func testAttributesGetAttributeProfileIDsAfterRemove(t *testing.T) {
t.Error(err)
} else {
sort.Strings(replyAttributeProfileIDs)
- if !utils.SliceStringEqual(replyAttributeProfileIDs, expectedIDs) {
+ if !slices.Equal(replyAttributeProfileIDs, expectedIDs) {
t.Errorf("expected: <%+v>, \nreceived: <%+v>", expectedIDs, replyAttributeProfileIDs)
}
}
@@ -609,7 +610,7 @@ func testAttributesGetAttributeProfileIDsAfterRemove(t *testing.T) {
t.Error(err)
} else {
sort.Strings(replyAttributeProfileIDs)
- if !utils.SliceStringEqual(replyAttributeProfileIDs, expectedIDs) {
+ if !slices.Equal(replyAttributeProfileIDs, expectedIDs) {
t.Errorf("expected: <%+v>, \nreceived: <%+v>", expectedIDs, replyAttributeProfileIDs)
}
}
@@ -623,7 +624,7 @@ func testAttributesGetAttributeProfileIDsAfterRemove(t *testing.T) {
t.Error(err)
} else {
sort.Strings(replyAttributeProfileIDs)
- if !utils.SliceStringEqual(replyAttributeProfileIDs, expectedIDs) {
+ if !slices.Equal(replyAttributeProfileIDs, expectedIDs) {
t.Errorf("expected: <%+v>, \nreceived: <%+v>", expectedIDs, replyAttributeProfileIDs)
}
}
diff --git a/apis/chargers_it_test.go b/apis/chargers_it_test.go
index f646acaae..95bd2a886 100644
--- a/apis/chargers_it_test.go
+++ b/apis/chargers_it_test.go
@@ -24,6 +24,7 @@ package apis
import (
"path"
"reflect"
+ "slices"
"sort"
"testing"
@@ -313,7 +314,7 @@ func testChargersGetChargerProfileIDsAfterSet(t *testing.T) {
t.Error(err)
} else {
sort.Strings(replyChargerProfileIDs)
- if !utils.SliceStringEqual(replyChargerProfileIDs, expectedIDs) {
+ if !slices.Equal(replyChargerProfileIDs, expectedIDs) {
t.Errorf("expected: <%+v>, \nreceived: <%+v>", expectedIDs, replyChargerProfileIDs)
}
}
@@ -327,7 +328,7 @@ func testChargersGetChargerProfileIDsAfterSet(t *testing.T) {
t.Error(err)
} else {
sort.Strings(replyChargerProfileIDs)
- if !utils.SliceStringEqual(replyChargerProfileIDs, expectedIDs) {
+ if !slices.Equal(replyChargerProfileIDs, expectedIDs) {
t.Errorf("expected: <%+v>, \nreceived: <%+v>", expectedIDs, replyChargerProfileIDs)
}
}
@@ -341,7 +342,7 @@ func testChargersGetChargerProfileIDsAfterSet(t *testing.T) {
t.Error(err)
} else {
sort.Strings(replyChargerProfileIDs)
- if !utils.SliceStringEqual(replyChargerProfileIDs, expectedIDs) {
+ if !slices.Equal(replyChargerProfileIDs, expectedIDs) {
t.Errorf("expected: <%+v>, \nreceived: <%+v>", expectedIDs, replyChargerProfileIDs)
}
}
@@ -505,7 +506,7 @@ func testChargersGetChargerProfileIDsAfterRemove(t *testing.T) {
t.Error(err)
} else {
sort.Strings(replyChargerProfileIDs)
- if !utils.SliceStringEqual(replyChargerProfileIDs, expectedIDs) {
+ if !slices.Equal(replyChargerProfileIDs, expectedIDs) {
t.Errorf("expected: <%+v>, \nreceived: <%+v>", expectedIDs, replyChargerProfileIDs)
}
}
@@ -519,7 +520,7 @@ func testChargersGetChargerProfileIDsAfterRemove(t *testing.T) {
t.Error(err)
} else {
sort.Strings(replyChargerProfileIDs)
- if !utils.SliceStringEqual(replyChargerProfileIDs, expectedIDs) {
+ if !slices.Equal(replyChargerProfileIDs, expectedIDs) {
t.Errorf("expected: <%+v>, \nreceived: <%+v>", expectedIDs, replyChargerProfileIDs)
}
}
@@ -533,7 +534,7 @@ func testChargersGetChargerProfileIDsAfterRemove(t *testing.T) {
t.Error(err)
} else {
sort.Strings(replyChargerProfileIDs)
- if !utils.SliceStringEqual(replyChargerProfileIDs, expectedIDs) {
+ if !slices.Equal(replyChargerProfileIDs, expectedIDs) {
t.Errorf("expected: <%+v>, \nreceived: <%+v>", expectedIDs, replyChargerProfileIDs)
}
}
@@ -851,7 +852,7 @@ func testChargersBlockerRemoveChargerProfiles(t *testing.T) {
t.Fatal(err)
} else {
sort.Strings(chargerProfileIDs)
- if !utils.SliceStringEqual(chargerProfileIDs, expected) {
+ if !slices.Equal(chargerProfileIDs, expected) {
t.Errorf("expected: <%+v>, \nreceived: <%+v>", expected, chargerProfileIDs)
}
}
diff --git a/apis/filter_indexes.go b/apis/filter_indexes.go
index 7583d5c68..3800c8901 100644
--- a/apis/filter_indexes.go
+++ b/apis/filter_indexes.go
@@ -19,6 +19,7 @@ along with this program. If not, see
package apis
import (
+ "slices"
"strings"
"time"
@@ -245,7 +246,7 @@ func (adms *AdminSv1) ComputeFilterIndexes(ctx *context.Context, args *utils.Arg
if e != nil {
return nil, e
}
- return utils.SliceStringPointer(utils.CloneStringSlice(th.FilterIDs)), nil
+ return utils.SliceStringPointer(slices.Clone(th.FilterIDs)), nil
}, nil); err != nil && err != utils.ErrNotFound {
return utils.APIErrorHandler(err)
}
@@ -260,7 +261,7 @@ func (adms *AdminSv1) ComputeFilterIndexes(ctx *context.Context, args *utils.Arg
if e != nil {
return nil, e
}
- return utils.SliceStringPointer(utils.CloneStringSlice(sq.FilterIDs)), nil
+ return utils.SliceStringPointer(slices.Clone(sq.FilterIDs)), nil
}, nil); err != nil && err != utils.ErrNotFound {
return utils.APIErrorHandler(err)
}
@@ -275,7 +276,7 @@ func (adms *AdminSv1) ComputeFilterIndexes(ctx *context.Context, args *utils.Arg
if e != nil {
return nil, e
}
- return utils.SliceStringPointer(utils.CloneStringSlice(rp.FilterIDs)), nil
+ return utils.SliceStringPointer(slices.Clone(rp.FilterIDs)), nil
}, nil); err != nil && err != utils.ErrNotFound {
return utils.APIErrorHandler(err)
}
@@ -290,7 +291,7 @@ func (adms *AdminSv1) ComputeFilterIndexes(ctx *context.Context, args *utils.Arg
if e != nil {
return nil, e
}
- return utils.SliceStringPointer(utils.CloneStringSlice(rp.FilterIDs)), nil
+ return utils.SliceStringPointer(slices.Clone(rp.FilterIDs)), nil
}, nil); err != nil && err != utils.ErrNotFound {
return utils.APIErrorHandler(err)
}
@@ -305,7 +306,7 @@ func (adms *AdminSv1) ComputeFilterIndexes(ctx *context.Context, args *utils.Arg
if e != nil {
return nil, e
}
- return utils.SliceStringPointer(utils.CloneStringSlice(attr.FilterIDs)), nil
+ return utils.SliceStringPointer(slices.Clone(attr.FilterIDs)), nil
}, nil); err != nil && err != utils.ErrNotFound {
return utils.APIErrorHandler(err)
}
@@ -320,7 +321,7 @@ func (adms *AdminSv1) ComputeFilterIndexes(ctx *context.Context, args *utils.Arg
if e != nil {
return nil, e
}
- return utils.SliceStringPointer(utils.CloneStringSlice(ch.FilterIDs)), nil
+ return utils.SliceStringPointer(slices.Clone(ch.FilterIDs)), nil
}, nil); err != nil && err != utils.ErrNotFound {
return utils.APIErrorHandler(err)
}
@@ -335,7 +336,7 @@ func (adms *AdminSv1) ComputeFilterIndexes(ctx *context.Context, args *utils.Arg
if e != nil {
return nil, e
}
- return utils.SliceStringPointer(utils.CloneStringSlice(acnts.FilterIDs)), nil
+ return utils.SliceStringPointer(slices.Clone(acnts.FilterIDs)), nil
}, nil); err != nil && err != utils.ErrNotFound {
return utils.APIErrorHandler(err)
}
@@ -350,7 +351,7 @@ func (adms *AdminSv1) ComputeFilterIndexes(ctx *context.Context, args *utils.Arg
if e != nil {
return nil, e
}
- return utils.SliceStringPointer(utils.CloneStringSlice(act.FilterIDs)), nil
+ return utils.SliceStringPointer(slices.Clone(act.FilterIDs)), nil
}, nil); err != nil && err != utils.ErrNotFound {
return utils.APIErrorHandler(err)
}
@@ -374,12 +375,12 @@ func (adms *AdminSv1) ComputeFilterIndexes(ctx *context.Context, args *utils.Arg
cacheIDs[utils.CacheRateFilterIndexes] = rtIds
_, e = engine.ComputeIndexes(ctx, adms.dm, tnt, id, utils.CacheRateFilterIndexes,
&rtIds, transactionID, func(_, id, _ string) (*[]string, error) {
- return utils.SliceStringPointer(utils.CloneStringSlice(rtPrf.Rates[id].FilterIDs)), nil
+ return utils.SliceStringPointer(slices.Clone(rtPrf.Rates[id].FilterIDs)), nil
}, nil)
if e != nil {
return nil, e
}
- return utils.SliceStringPointer(utils.CloneStringSlice(rtPrf.FilterIDs)), nil
+ return utils.SliceStringPointer(slices.Clone(rtPrf.FilterIDs)), nil
}, nil); err != nil {
return utils.APIErrorHandler(err)
}
@@ -394,7 +395,7 @@ func (adms *AdminSv1) ComputeFilterIndexes(ctx *context.Context, args *utils.Arg
if e != nil {
return nil, e
}
- return utils.SliceStringPointer(utils.CloneStringSlice(dsp.FilterIDs)), nil
+ return utils.SliceStringPointer(slices.Clone(dsp.FilterIDs)), nil
}, nil); err != nil && err != utils.ErrDSPProfileNotFound {
return utils.APIErrorHandler(err)
}
@@ -502,7 +503,7 @@ func (adms *AdminSv1) ComputeFilterIndexIDs(ctx *context.Context, args *utils.Ar
if e != nil {
return nil, e
}
- return utils.SliceStringPointer(utils.CloneStringSlice(th.FilterIDs)), nil
+ return utils.SliceStringPointer(slices.Clone(th.FilterIDs)), nil
}, nil); err != nil && err != utils.ErrNotFound {
return utils.APIErrorHandler(err)
}
@@ -517,7 +518,7 @@ func (adms *AdminSv1) ComputeFilterIndexIDs(ctx *context.Context, args *utils.Ar
return nil, e
}
cacheIDs[utils.CacheStatFilterIndexes] = []string{sq.ID}
- return utils.SliceStringPointer(utils.CloneStringSlice(sq.FilterIDs)), nil
+ return utils.SliceStringPointer(slices.Clone(sq.FilterIDs)), nil
}, nil); err != nil && err != utils.ErrNotFound {
return utils.APIErrorHandler(err)
}
@@ -532,7 +533,7 @@ func (adms *AdminSv1) ComputeFilterIndexIDs(ctx *context.Context, args *utils.Ar
return nil, e
}
cacheIDs[utils.CacheResourceFilterIndexes] = []string{rp.ID}
- return utils.SliceStringPointer(utils.CloneStringSlice(rp.FilterIDs)), nil
+ return utils.SliceStringPointer(slices.Clone(rp.FilterIDs)), nil
}, nil); err != nil && err != utils.ErrNotFound {
return utils.APIErrorHandler(err)
}
@@ -547,7 +548,7 @@ func (adms *AdminSv1) ComputeFilterIndexIDs(ctx *context.Context, args *utils.Ar
return nil, e
}
cacheIDs[utils.CacheRouteFilterIndexes] = []string{rp.ID}
- return utils.SliceStringPointer(utils.CloneStringSlice(rp.FilterIDs)), nil
+ return utils.SliceStringPointer(slices.Clone(rp.FilterIDs)), nil
}, nil); err != nil && err != utils.ErrNotFound {
return utils.APIErrorHandler(err)
}
@@ -561,7 +562,7 @@ func (adms *AdminSv1) ComputeFilterIndexIDs(ctx *context.Context, args *utils.Ar
if e != nil {
return nil, e
}
- return utils.SliceStringPointer(utils.CloneStringSlice(attr.FilterIDs)), nil
+ return utils.SliceStringPointer(slices.Clone(attr.FilterIDs)), nil
}, nil); err != nil && err != utils.ErrNotFound {
return utils.APIErrorHandler(err)
}
@@ -575,7 +576,7 @@ func (adms *AdminSv1) ComputeFilterIndexIDs(ctx *context.Context, args *utils.Ar
if e != nil {
return nil, e
}
- return utils.SliceStringPointer(utils.CloneStringSlice(ch.FilterIDs)), nil
+ return utils.SliceStringPointer(slices.Clone(ch.FilterIDs)), nil
}, nil); err != nil && err != utils.ErrNotFound {
return utils.APIErrorHandler(err)
}
@@ -589,7 +590,7 @@ func (adms *AdminSv1) ComputeFilterIndexIDs(ctx *context.Context, args *utils.Ar
if e != nil {
return nil, e
}
- return utils.SliceStringPointer(utils.CloneStringSlice(acc.FilterIDs)), nil
+ return utils.SliceStringPointer(slices.Clone(acc.FilterIDs)), nil
}, nil); err != nil && err != utils.ErrNotFound {
return utils.APIErrorHandler(err)
}
@@ -603,7 +604,7 @@ func (adms *AdminSv1) ComputeFilterIndexIDs(ctx *context.Context, args *utils.Ar
if e != nil {
return nil, e
}
- return utils.SliceStringPointer(utils.CloneStringSlice(act.FilterIDs)), nil
+ return utils.SliceStringPointer(slices.Clone(act.FilterIDs)), nil
}, nil); err != nil && err != utils.ErrNotFound {
return utils.APIErrorHandler(err)
}
@@ -625,7 +626,7 @@ func (adms *AdminSv1) ComputeFilterIndexIDs(ctx *context.Context, args *utils.Ar
}
indexesRate, e := engine.ComputeIndexes(ctx, adms.dm, tnt, id, utils.CacheRateFilterIndexes,
&rtIds, transactionID, func(_, id, _ string) (*[]string, error) {
- return utils.SliceStringPointer(utils.CloneStringSlice(rpr.Rates[id].FilterIDs)), nil
+ return utils.SliceStringPointer(slices.Clone(rpr.Rates[id].FilterIDs)), nil
}, nil)
if e != nil {
return nil, e
@@ -633,7 +634,7 @@ func (adms *AdminSv1) ComputeFilterIndexIDs(ctx *context.Context, args *utils.Ar
if indexesRate.Size() != 0 {
cacheIDs[utils.CacheRateFilterIndexes] = indexesRate.AsSlice()
}
- return utils.SliceStringPointer(utils.CloneStringSlice(rpr.FilterIDs)), nil
+ return utils.SliceStringPointer(slices.Clone(rpr.FilterIDs)), nil
}, nil); err != nil && err != utils.ErrNotFound {
return utils.APIErrorHandler(err)
}
@@ -647,7 +648,7 @@ func (adms *AdminSv1) ComputeFilterIndexIDs(ctx *context.Context, args *utils.Ar
if e != nil {
return nil, e
}
- return utils.SliceStringPointer(utils.CloneStringSlice(dsp.FilterIDs)), nil
+ return utils.SliceStringPointer(slices.Clone(dsp.FilterIDs)), nil
}, nil); err != nil && err != utils.ErrDSPProfileNotFound {
return utils.APIErrorHandler(err)
}
diff --git a/apis/filters_it_test.go b/apis/filters_it_test.go
index ddea9cb1f..0336ccbfc 100644
--- a/apis/filters_it_test.go
+++ b/apis/filters_it_test.go
@@ -24,6 +24,7 @@ package apis
import (
"path"
"reflect"
+ "slices"
"sort"
"testing"
@@ -316,7 +317,7 @@ func testFiltersGetFilterIDsAfterSet(t *testing.T) {
t.Error(err)
} else {
sort.Strings(replyFilterIDs)
- if !utils.SliceStringEqual(replyFilterIDs, expectedIDs) {
+ if !slices.Equal(replyFilterIDs, expectedIDs) {
t.Errorf("expected: <%+v>, \nreceived: <%+v>", expectedIDs, replyFilterIDs)
}
}
@@ -330,7 +331,7 @@ func testFiltersGetFilterIDsAfterSet(t *testing.T) {
t.Error(err)
} else {
sort.Strings(replyFilterIDs)
- if !utils.SliceStringEqual(replyFilterIDs, expectedIDs) {
+ if !slices.Equal(replyFilterIDs, expectedIDs) {
t.Errorf("expected: <%+v>, \nreceived: <%+v>", expectedIDs, replyFilterIDs)
}
}
@@ -344,7 +345,7 @@ func testFiltersGetFilterIDsAfterSet(t *testing.T) {
t.Error(err)
} else {
sort.Strings(replyFilterIDs)
- if !utils.SliceStringEqual(replyFilterIDs, expectedIDs) {
+ if !slices.Equal(replyFilterIDs, expectedIDs) {
t.Errorf("expected: <%+v>, \nreceived: <%+v>", expectedIDs, replyFilterIDs)
}
}
@@ -518,7 +519,7 @@ func testFiltersGetFilterIDsAfterRemove(t *testing.T) {
t.Error(err)
} else {
sort.Strings(replyFilterIDs)
- if !utils.SliceStringEqual(replyFilterIDs, expectedIDs) {
+ if !slices.Equal(replyFilterIDs, expectedIDs) {
t.Errorf("expected: <%+v>, \nreceived: <%+v>", expectedIDs, replyFilterIDs)
}
}
@@ -532,7 +533,7 @@ func testFiltersGetFilterIDsAfterRemove(t *testing.T) {
t.Error(err)
} else {
sort.Strings(replyFilterIDs)
- if !utils.SliceStringEqual(replyFilterIDs, expectedIDs) {
+ if !slices.Equal(replyFilterIDs, expectedIDs) {
t.Errorf("expected: <%+v>, \nreceived: <%+v>", expectedIDs, replyFilterIDs)
}
}
@@ -546,7 +547,7 @@ func testFiltersGetFilterIDsAfterRemove(t *testing.T) {
t.Error(err)
} else {
sort.Strings(replyFilterIDs)
- if !utils.SliceStringEqual(replyFilterIDs, expectedIDs) {
+ if !slices.Equal(replyFilterIDs, expectedIDs) {
t.Errorf("expected: <%+v>, \nreceived: <%+v>", expectedIDs, replyFilterIDs)
}
}
diff --git a/apis/routes_it_test.go b/apis/routes_it_test.go
index eb048caf6..73da654fb 100644
--- a/apis/routes_it_test.go
+++ b/apis/routes_it_test.go
@@ -24,6 +24,7 @@ package apis
import (
"path"
"reflect"
+ "slices"
"sort"
"testing"
@@ -342,7 +343,7 @@ func testRoutesGetRouteProfileIDsAfterSet(t *testing.T) {
t.Error(err)
} else {
sort.Strings(replyRouteProfileIDs)
- if !utils.SliceStringEqual(replyRouteProfileIDs, expectedIDs) {
+ if !slices.Equal(replyRouteProfileIDs, expectedIDs) {
t.Errorf("expected: <%+v>, \nreceived: <%+v>", expectedIDs, replyRouteProfileIDs)
}
}
@@ -356,7 +357,7 @@ func testRoutesGetRouteProfileIDsAfterSet(t *testing.T) {
t.Error(err)
} else {
sort.Strings(replyRouteProfileIDs)
- if !utils.SliceStringEqual(replyRouteProfileIDs, expectedIDs) {
+ if !slices.Equal(replyRouteProfileIDs, expectedIDs) {
t.Errorf("expected: <%+v>, \nreceived: <%+v>", expectedIDs, replyRouteProfileIDs)
}
}
@@ -370,7 +371,7 @@ func testRoutesGetRouteProfileIDsAfterSet(t *testing.T) {
t.Error(err)
} else {
sort.Strings(replyRouteProfileIDs)
- if !utils.SliceStringEqual(replyRouteProfileIDs, expectedIDs) {
+ if !slices.Equal(replyRouteProfileIDs, expectedIDs) {
t.Errorf("expected: <%+v>, \nreceived: <%+v>", expectedIDs, replyRouteProfileIDs)
}
}
@@ -559,7 +560,7 @@ func testRoutesGetRouteProfileIDsAfterRemove(t *testing.T) {
t.Error(err)
} else {
sort.Strings(replyRouteProfileIDs)
- if !utils.SliceStringEqual(replyRouteProfileIDs, expectedIDs) {
+ if !slices.Equal(replyRouteProfileIDs, expectedIDs) {
t.Errorf("expected: <%+v>, \nreceived: <%+v>", expectedIDs, replyRouteProfileIDs)
}
}
@@ -573,7 +574,7 @@ func testRoutesGetRouteProfileIDsAfterRemove(t *testing.T) {
t.Error(err)
} else {
sort.Strings(replyRouteProfileIDs)
- if !utils.SliceStringEqual(replyRouteProfileIDs, expectedIDs) {
+ if !slices.Equal(replyRouteProfileIDs, expectedIDs) {
t.Errorf("expected: <%+v>, \nreceived: <%+v>", expectedIDs, replyRouteProfileIDs)
}
}
@@ -587,7 +588,7 @@ func testRoutesGetRouteProfileIDsAfterRemove(t *testing.T) {
t.Error(err)
} else {
sort.Strings(replyRouteProfileIDs)
- if !utils.SliceStringEqual(replyRouteProfileIDs, expectedIDs) {
+ if !slices.Equal(replyRouteProfileIDs, expectedIDs) {
t.Errorf("expected: <%+v>, \nreceived: <%+v>", expectedIDs, replyRouteProfileIDs)
}
}
@@ -728,7 +729,7 @@ func testRoutesBlockerRemoveRouteProfiles(t *testing.T) {
t.Fatal(err)
} else {
sort.Strings(routeProfileIDs)
- if !utils.SliceStringEqual(routeProfileIDs, expected) {
+ if !slices.Equal(routeProfileIDs, expected) {
t.Errorf("expected: <%+v>, \nreceived: <%+v>", expected, routeProfileIDs)
}
}
diff --git a/config/accountscfg.go b/config/accountscfg.go
index b228dc187..0a91673a5 100644
--- a/config/accountscfg.go
+++ b/config/accountscfg.go
@@ -19,6 +19,7 @@ along with this program. If not, see
package config
import (
+ "slices"
"time"
"github.com/cgrates/birpc/context"
@@ -106,19 +107,19 @@ func (acS *AccountSCfg) loadFromJSONCfg(jsnCfg *AccountSJsonCfg) (err error) {
acS.ThresholdSConns = updateInternalConns(*jsnCfg.Thresholds_conns, utils.MetaThresholds)
}
if jsnCfg.String_indexed_fields != nil {
- acS.StringIndexedFields = utils.SliceStringPointer(utils.CloneStringSlice(*jsnCfg.String_indexed_fields))
+ acS.StringIndexedFields = utils.SliceStringPointer(slices.Clone(*jsnCfg.String_indexed_fields))
}
if jsnCfg.Prefix_indexed_fields != nil {
- acS.PrefixIndexedFields = utils.SliceStringPointer(utils.CloneStringSlice(*jsnCfg.Prefix_indexed_fields))
+ acS.PrefixIndexedFields = utils.SliceStringPointer(slices.Clone(*jsnCfg.Prefix_indexed_fields))
}
if jsnCfg.Suffix_indexed_fields != nil {
- acS.SuffixIndexedFields = utils.SliceStringPointer(utils.CloneStringSlice(*jsnCfg.Suffix_indexed_fields))
+ acS.SuffixIndexedFields = utils.SliceStringPointer(slices.Clone(*jsnCfg.Suffix_indexed_fields))
}
if jsnCfg.Exists_indexed_fields != nil {
- acS.ExistsIndexedFields = utils.SliceStringPointer(utils.CloneStringSlice(*jsnCfg.Exists_indexed_fields))
+ acS.ExistsIndexedFields = utils.SliceStringPointer(slices.Clone(*jsnCfg.Exists_indexed_fields))
}
if jsnCfg.Notexists_indexed_fields != nil {
- acS.NotExistsIndexedFields = utils.SliceStringPointer(utils.CloneStringSlice(*jsnCfg.Notexists_indexed_fields))
+ acS.NotExistsIndexedFields = utils.SliceStringPointer(slices.Clone(*jsnCfg.Notexists_indexed_fields))
}
if jsnCfg.Nested_fields != nil {
acS.NestedFields = *jsnCfg.Nested_fields
@@ -161,19 +162,19 @@ func (acS AccountSCfg) AsMapInterface(string) any {
mp[utils.ThresholdSConnsCfg] = getInternalJSONConns(acS.ThresholdSConns)
}
if acS.StringIndexedFields != nil {
- mp[utils.StringIndexedFieldsCfg] = utils.CloneStringSlice(*acS.StringIndexedFields)
+ mp[utils.StringIndexedFieldsCfg] = slices.Clone(*acS.StringIndexedFields)
}
if acS.PrefixIndexedFields != nil {
- mp[utils.PrefixIndexedFieldsCfg] = utils.CloneStringSlice(*acS.PrefixIndexedFields)
+ mp[utils.PrefixIndexedFieldsCfg] = slices.Clone(*acS.PrefixIndexedFields)
}
if acS.SuffixIndexedFields != nil {
- mp[utils.SuffixIndexedFieldsCfg] = utils.CloneStringSlice(*acS.SuffixIndexedFields)
+ mp[utils.SuffixIndexedFieldsCfg] = slices.Clone(*acS.SuffixIndexedFields)
}
if acS.ExistsIndexedFields != nil {
- mp[utils.ExistsIndexedFieldsCfg] = utils.CloneStringSlice(*acS.ExistsIndexedFields)
+ mp[utils.ExistsIndexedFieldsCfg] = slices.Clone(*acS.ExistsIndexedFields)
}
if acS.NotExistsIndexedFields != nil {
- mp[utils.NotExistsIndexedFieldsCfg] = utils.CloneStringSlice(*acS.NotExistsIndexedFields)
+ mp[utils.NotExistsIndexedFieldsCfg] = slices.Clone(*acS.NotExistsIndexedFields)
}
if acS.MaxUsage != nil {
mp[utils.MaxUsage] = acS.MaxUsage.String()
@@ -214,28 +215,28 @@ func (acS AccountSCfg) Clone() (cln *AccountSCfg) {
Opts: acS.Opts.Clone(),
}
if acS.AttributeSConns != nil {
- cln.AttributeSConns = utils.CloneStringSlice(acS.AttributeSConns)
+ cln.AttributeSConns = slices.Clone(acS.AttributeSConns)
}
if acS.RateSConns != nil {
- cln.RateSConns = utils.CloneStringSlice(acS.RateSConns)
+ cln.RateSConns = slices.Clone(acS.RateSConns)
}
if acS.ThresholdSConns != nil {
- cln.ThresholdSConns = utils.CloneStringSlice(acS.ThresholdSConns)
+ cln.ThresholdSConns = slices.Clone(acS.ThresholdSConns)
}
if acS.StringIndexedFields != nil {
- cln.StringIndexedFields = utils.SliceStringPointer(utils.CloneStringSlice(*acS.StringIndexedFields))
+ cln.StringIndexedFields = utils.SliceStringPointer(slices.Clone(*acS.StringIndexedFields))
}
if acS.PrefixIndexedFields != nil {
- cln.PrefixIndexedFields = utils.SliceStringPointer(utils.CloneStringSlice(*acS.PrefixIndexedFields))
+ cln.PrefixIndexedFields = utils.SliceStringPointer(slices.Clone(*acS.PrefixIndexedFields))
}
if acS.SuffixIndexedFields != nil {
- cln.SuffixIndexedFields = utils.SliceStringPointer(utils.CloneStringSlice(*acS.SuffixIndexedFields))
+ cln.SuffixIndexedFields = utils.SliceStringPointer(slices.Clone(*acS.SuffixIndexedFields))
}
if acS.ExistsIndexedFields != nil {
- cln.ExistsIndexedFields = utils.SliceStringPointer(utils.CloneStringSlice(*acS.ExistsIndexedFields))
+ cln.ExistsIndexedFields = utils.SliceStringPointer(slices.Clone(*acS.ExistsIndexedFields))
}
if acS.NotExistsIndexedFields != nil {
- cln.NotExistsIndexedFields = utils.SliceStringPointer(utils.CloneStringSlice(*acS.NotExistsIndexedFields))
+ cln.NotExistsIndexedFields = utils.SliceStringPointer(slices.Clone(*acS.NotExistsIndexedFields))
}
return
}
@@ -287,13 +288,13 @@ func diffAccountSJsonCfg(d *AccountSJsonCfg, v1, v2 *AccountSCfg) *AccountSJsonC
if v1.Enabled != v2.Enabled {
d.Enabled = utils.BoolPointer(v2.Enabled)
}
- if !utils.SliceStringEqual(v1.AttributeSConns, v2.AttributeSConns) {
+ if !slices.Equal(v1.AttributeSConns, v2.AttributeSConns) {
d.Attributes_conns = utils.SliceStringPointer(getInternalJSONConns(v2.AttributeSConns))
}
- if !utils.SliceStringEqual(v1.RateSConns, v2.RateSConns) {
+ if !slices.Equal(v1.RateSConns, v2.RateSConns) {
d.Rates_conns = utils.SliceStringPointer(getInternalJSONConns(v2.RateSConns))
}
- if !utils.SliceStringEqual(v1.ThresholdSConns, v2.ThresholdSConns) {
+ if !slices.Equal(v1.ThresholdSConns, v2.ThresholdSConns) {
d.Thresholds_conns = utils.SliceStringPointer(getInternalJSONConns(v2.ThresholdSConns))
}
if v1.IndexedSelects != v2.IndexedSelects {
diff --git a/config/actionscfg.go b/config/actionscfg.go
index 420d8a918..05f4fec74 100644
--- a/config/actionscfg.go
+++ b/config/actionscfg.go
@@ -19,6 +19,8 @@ along with this program. If not, see
package config
import (
+ "slices"
+
"github.com/cgrates/birpc/context"
"github.com/cgrates/cgrates/utils"
)
@@ -100,25 +102,25 @@ func (acS *ActionSCfg) loadFromJSONCfg(jsnCfg *ActionSJsonCfg) (err error) {
acS.AccountSConns = updateInternalConns(*jsnCfg.Accounts_conns, utils.MetaAccounts)
}
if jsnCfg.Tenants != nil {
- acS.Tenants = utils.SliceStringPointer(utils.CloneStringSlice(*jsnCfg.Tenants))
+ acS.Tenants = utils.SliceStringPointer(slices.Clone(*jsnCfg.Tenants))
}
if jsnCfg.Indexed_selects != nil {
acS.IndexedSelects = *jsnCfg.Indexed_selects
}
if jsnCfg.String_indexed_fields != nil {
- acS.StringIndexedFields = utils.SliceStringPointer(utils.CloneStringSlice(*jsnCfg.String_indexed_fields))
+ acS.StringIndexedFields = utils.SliceStringPointer(slices.Clone(*jsnCfg.String_indexed_fields))
}
if jsnCfg.Prefix_indexed_fields != nil {
- acS.PrefixIndexedFields = utils.SliceStringPointer(utils.CloneStringSlice(*jsnCfg.Prefix_indexed_fields))
+ acS.PrefixIndexedFields = utils.SliceStringPointer(slices.Clone(*jsnCfg.Prefix_indexed_fields))
}
if jsnCfg.Suffix_indexed_fields != nil {
- acS.SuffixIndexedFields = utils.SliceStringPointer(utils.CloneStringSlice(*jsnCfg.Suffix_indexed_fields))
+ acS.SuffixIndexedFields = utils.SliceStringPointer(slices.Clone(*jsnCfg.Suffix_indexed_fields))
}
if jsnCfg.Exists_indexed_fields != nil {
- acS.ExistsIndexedFields = utils.SliceStringPointer(utils.CloneStringSlice(*jsnCfg.Exists_indexed_fields))
+ acS.ExistsIndexedFields = utils.SliceStringPointer(slices.Clone(*jsnCfg.Exists_indexed_fields))
}
if jsnCfg.Notexists_indexed_fields != nil {
- acS.NotExistsIndexedFields = utils.SliceStringPointer(utils.CloneStringSlice(*jsnCfg.Notexists_indexed_fields))
+ acS.NotExistsIndexedFields = utils.SliceStringPointer(slices.Clone(*jsnCfg.Notexists_indexed_fields))
}
if jsnCfg.Nested_fields != nil {
acS.NestedFields = *jsnCfg.Nested_fields
@@ -163,22 +165,22 @@ func (acS ActionSCfg) AsMapInterface(string) any {
mp[utils.EEsConnsCfg] = getInternalJSONConns(acS.EEsConns)
}
if acS.Tenants != nil {
- mp[utils.Tenants] = utils.CloneStringSlice(*acS.Tenants)
+ mp[utils.Tenants] = slices.Clone(*acS.Tenants)
}
if acS.StringIndexedFields != nil {
- mp[utils.StringIndexedFieldsCfg] = utils.CloneStringSlice(*acS.StringIndexedFields)
+ mp[utils.StringIndexedFieldsCfg] = slices.Clone(*acS.StringIndexedFields)
}
if acS.PrefixIndexedFields != nil {
- mp[utils.PrefixIndexedFieldsCfg] = utils.CloneStringSlice(*acS.PrefixIndexedFields)
+ mp[utils.PrefixIndexedFieldsCfg] = slices.Clone(*acS.PrefixIndexedFields)
}
if acS.SuffixIndexedFields != nil {
- mp[utils.SuffixIndexedFieldsCfg] = utils.CloneStringSlice(*acS.SuffixIndexedFields)
+ mp[utils.SuffixIndexedFieldsCfg] = slices.Clone(*acS.SuffixIndexedFields)
}
if acS.ExistsIndexedFields != nil {
- mp[utils.ExistsIndexedFieldsCfg] = utils.CloneStringSlice(*acS.ExistsIndexedFields)
+ mp[utils.ExistsIndexedFieldsCfg] = slices.Clone(*acS.ExistsIndexedFields)
}
if acS.NotExistsIndexedFields != nil {
- mp[utils.NotExistsIndexedFieldsCfg] = utils.CloneStringSlice(*acS.NotExistsIndexedFields)
+ mp[utils.NotExistsIndexedFieldsCfg] = slices.Clone(*acS.NotExistsIndexedFields)
}
return mp
}
@@ -215,37 +217,37 @@ func (acS ActionSCfg) Clone() (cln *ActionSCfg) {
Opts: acS.Opts.Clone(),
}
if acS.CDRsConns != nil {
- cln.CDRsConns = utils.CloneStringSlice(acS.CDRsConns)
+ cln.CDRsConns = slices.Clone(acS.CDRsConns)
}
if acS.ThresholdSConns != nil {
- cln.ThresholdSConns = utils.CloneStringSlice(acS.ThresholdSConns)
+ cln.ThresholdSConns = slices.Clone(acS.ThresholdSConns)
}
if acS.StatSConns != nil {
- cln.StatSConns = utils.CloneStringSlice(acS.StatSConns)
+ cln.StatSConns = slices.Clone(acS.StatSConns)
}
if acS.AccountSConns != nil {
- cln.AccountSConns = utils.CloneStringSlice(acS.AccountSConns)
+ cln.AccountSConns = slices.Clone(acS.AccountSConns)
}
if acS.EEsConns != nil {
- cln.EEsConns = utils.CloneStringSlice(acS.EEsConns)
+ cln.EEsConns = slices.Clone(acS.EEsConns)
}
if acS.Tenants != nil {
- cln.Tenants = utils.SliceStringPointer(utils.CloneStringSlice(*acS.Tenants))
+ cln.Tenants = utils.SliceStringPointer(slices.Clone(*acS.Tenants))
}
if acS.StringIndexedFields != nil {
- cln.StringIndexedFields = utils.SliceStringPointer(utils.CloneStringSlice(*acS.StringIndexedFields))
+ cln.StringIndexedFields = utils.SliceStringPointer(slices.Clone(*acS.StringIndexedFields))
}
if acS.PrefixIndexedFields != nil {
- cln.PrefixIndexedFields = utils.SliceStringPointer(utils.CloneStringSlice(*acS.PrefixIndexedFields))
+ cln.PrefixIndexedFields = utils.SliceStringPointer(slices.Clone(*acS.PrefixIndexedFields))
}
if acS.SuffixIndexedFields != nil {
- cln.SuffixIndexedFields = utils.SliceStringPointer(utils.CloneStringSlice(*acS.SuffixIndexedFields))
+ cln.SuffixIndexedFields = utils.SliceStringPointer(slices.Clone(*acS.SuffixIndexedFields))
}
if acS.ExistsIndexedFields != nil {
- cln.ExistsIndexedFields = utils.SliceStringPointer(utils.CloneStringSlice(*acS.ExistsIndexedFields))
+ cln.ExistsIndexedFields = utils.SliceStringPointer(slices.Clone(*acS.ExistsIndexedFields))
}
if acS.NotExistsIndexedFields != nil {
- cln.NotExistsIndexedFields = utils.SliceStringPointer(utils.CloneStringSlice(*acS.NotExistsIndexedFields))
+ cln.NotExistsIndexedFields = utils.SliceStringPointer(slices.Clone(*acS.NotExistsIndexedFields))
}
if acS.DynaprepaidActionProfile != nil {
cln.DynaprepaidActionProfile = make([]string, len(acS.DynaprepaidActionProfile))
@@ -303,24 +305,24 @@ func diffActionSJsonCfg(d *ActionSJsonCfg, v1, v2 *ActionSCfg) *ActionSJsonCfg {
if v1.Enabled != v2.Enabled {
d.Enabled = utils.BoolPointer(v2.Enabled)
}
- if !utils.SliceStringEqual(v1.CDRsConns, v2.CDRsConns) {
+ if !slices.Equal(v1.CDRsConns, v2.CDRsConns) {
d.Cdrs_conns = utils.SliceStringPointer(getInternalJSONConns(v2.CDRsConns))
}
- if !utils.SliceStringEqual(v1.EEsConns, v2.EEsConns) {
+ if !slices.Equal(v1.EEsConns, v2.EEsConns) {
d.Ees_conns = utils.SliceStringPointer(getInternalJSONConns(v2.EEsConns))
}
- if !utils.SliceStringEqual(v1.ThresholdSConns, v2.ThresholdSConns) {
+ if !slices.Equal(v1.ThresholdSConns, v2.ThresholdSConns) {
d.Thresholds_conns = utils.SliceStringPointer(getInternalJSONConns(v2.ThresholdSConns))
}
- if !utils.SliceStringEqual(v1.StatSConns, v2.StatSConns) {
+ if !slices.Equal(v1.StatSConns, v2.StatSConns) {
d.Stats_conns = utils.SliceStringPointer(getInternalJSONConns(v2.StatSConns))
}
- if !utils.SliceStringEqual(v1.AccountSConns, v2.AccountSConns) {
+ if !slices.Equal(v1.AccountSConns, v2.AccountSConns) {
d.Accounts_conns = utils.SliceStringPointer(getInternalJSONConns(v2.AccountSConns))
}
if v1.Tenants != v2.Tenants {
- d.Tenants = utils.SliceStringPointer(utils.CloneStringSlice(*v2.Tenants))
+ d.Tenants = utils.SliceStringPointer(slices.Clone(*v2.Tenants))
}
if v1.IndexedSelects != v2.IndexedSelects {
d.Indexed_selects = utils.BoolPointer(v2.IndexedSelects)
@@ -333,7 +335,7 @@ func diffActionSJsonCfg(d *ActionSJsonCfg, v1, v2 *ActionSCfg) *ActionSJsonCfg {
if v1.NestedFields != v2.NestedFields {
d.Nested_fields = utils.BoolPointer(v2.NestedFields)
}
- if !utils.SliceStringEqual(v1.DynaprepaidActionProfile, v2.DynaprepaidActionProfile) {
+ if !slices.Equal(v1.DynaprepaidActionProfile, v2.DynaprepaidActionProfile) {
d.Dynaprepaid_actionprofile = utils.SliceStringPointer(getInternalJSONConns(v2.DynaprepaidActionProfile))
}
d.Opts = diffActionsOptsJsonCfg(d.Opts, v1.Opts, v2.Opts)
diff --git a/config/adminscfg.go b/config/adminscfg.go
index 1972a1379..8cbf03abb 100644
--- a/config/adminscfg.go
+++ b/config/adminscfg.go
@@ -19,6 +19,8 @@ along with this program. If not, see
package config
import (
+ "slices"
+
"github.com/cgrates/birpc/context"
"github.com/cgrates/cgrates/utils"
)
@@ -92,16 +94,16 @@ func (aCfg AdminSCfg) Clone() (cln *AdminSCfg) {
Enabled: aCfg.Enabled,
}
if aCfg.CachesConns != nil {
- cln.CachesConns = utils.CloneStringSlice(aCfg.CachesConns)
+ cln.CachesConns = slices.Clone(aCfg.CachesConns)
}
if aCfg.ActionSConns != nil {
- cln.ActionSConns = utils.CloneStringSlice(aCfg.ActionSConns)
+ cln.ActionSConns = slices.Clone(aCfg.ActionSConns)
}
if aCfg.AttributeSConns != nil {
- cln.AttributeSConns = utils.CloneStringSlice(aCfg.AttributeSConns)
+ cln.AttributeSConns = slices.Clone(aCfg.AttributeSConns)
}
if aCfg.EEsConns != nil {
- cln.EEsConns = utils.CloneStringSlice(aCfg.EEsConns)
+ cln.EEsConns = slices.Clone(aCfg.EEsConns)
}
return
}
@@ -121,16 +123,16 @@ func diffAdminSJsonCfg(d *AdminSJsonCfg, v1, v2 *AdminSCfg) *AdminSJsonCfg {
if v1.Enabled != v2.Enabled {
d.Enabled = utils.BoolPointer(v2.Enabled)
}
- if !utils.SliceStringEqual(v1.CachesConns, v2.CachesConns) {
+ if !slices.Equal(v1.CachesConns, v2.CachesConns) {
d.Caches_conns = utils.SliceStringPointer(getInternalJSONConns(v2.CachesConns))
}
- if !utils.SliceStringEqual(v1.ActionSConns, v2.ActionSConns) {
+ if !slices.Equal(v1.ActionSConns, v2.ActionSConns) {
d.Actions_conns = utils.SliceStringPointer(getInternalJSONConns(v2.ActionSConns))
}
- if !utils.SliceStringEqual(v1.AttributeSConns, v2.AttributeSConns) {
+ if !slices.Equal(v1.AttributeSConns, v2.AttributeSConns) {
d.Attributes_conns = utils.SliceStringPointer(getInternalJSONConns(v2.AttributeSConns))
}
- if !utils.SliceStringEqual(v1.EEsConns, v2.EEsConns) {
+ if !slices.Equal(v1.EEsConns, v2.EEsConns) {
d.Ees_conns = utils.SliceStringPointer(getInternalJSONConns(v2.EEsConns))
}
return d
diff --git a/config/analyzerscfg.go b/config/analyzerscfg.go
index 79fbb57a0..ad83f62f5 100644
--- a/config/analyzerscfg.go
+++ b/config/analyzerscfg.go
@@ -19,6 +19,7 @@ along with this program. If not, see
package config
import (
+ "slices"
"time"
"github.com/cgrates/birpc/context"
@@ -123,7 +124,7 @@ func (alS AnalyzerSCfg) Clone() (cln *AnalyzerSCfg) {
Opts: alS.Opts.Clone(),
}
if alS.EEsConns != nil {
- cln.EEsConns = utils.CloneStringSlice(alS.EEsConns)
+ cln.EEsConns = slices.Clone(alS.EEsConns)
}
return
}
@@ -178,7 +179,7 @@ func diffAnalyzerSJsonCfg(d *AnalyzerSJsonCfg, v1, v2 *AnalyzerSCfg) *AnalyzerSJ
if v1.TTL != v2.TTL {
d.Ttl = utils.StringPointer(v2.TTL.String())
}
- if !utils.SliceStringEqual(v1.EEsConns, v2.EEsConns) {
+ if !slices.Equal(v1.EEsConns, v2.EEsConns) {
d.Ees_conns = utils.SliceStringPointer(getBiRPCInternalJSONConns(v2.EEsConns))
}
if v1.CleanupInterval != v2.CleanupInterval {
diff --git a/config/apibancfg.go b/config/apibancfg.go
index 64b620b12..e5df6d6db 100644
--- a/config/apibancfg.go
+++ b/config/apibancfg.go
@@ -19,6 +19,8 @@ along with this program. If not, see
package config
import (
+ "slices"
+
"github.com/cgrates/birpc/context"
"github.com/cgrates/cgrates/utils"
)
@@ -46,7 +48,7 @@ func (ban *APIBanCfg) loadFromJSONCfg(jsnCfg *APIBanJsonCfg) (err error) {
ban.Enabled = *jsnCfg.Enabled
}
if jsnCfg.Keys != nil {
- ban.Keys = utils.CloneStringSlice(*jsnCfg.Keys)
+ ban.Keys = slices.Clone(*jsnCfg.Keys)
}
return nil
}
@@ -66,7 +68,7 @@ func (ban APIBanCfg) CloneSection() Section { return ban.Clone() }
func (ban APIBanCfg) Clone() (cln *APIBanCfg) {
return &APIBanCfg{
Enabled: ban.Enabled,
- Keys: utils.CloneStringSlice(ban.Keys),
+ Keys: slices.Clone(ban.Keys),
}
}
@@ -82,7 +84,7 @@ func diffAPIBanJsonCfg(d *APIBanJsonCfg, v1, v2 *APIBanCfg) *APIBanJsonCfg {
if v1.Enabled != v2.Enabled {
d.Enabled = utils.BoolPointer(v2.Enabled)
}
- if !utils.SliceStringEqual(v1.Keys, v2.Keys) {
+ if !slices.Equal(v1.Keys, v2.Keys) {
d.Keys = &v2.Keys
}
return d
diff --git a/config/asteriskagntcfg.go b/config/asteriskagntcfg.go
index 41e223485..d12aafa71 100644
--- a/config/asteriskagntcfg.go
+++ b/config/asteriskagntcfg.go
@@ -19,6 +19,7 @@ along with this program. If not, see
package config
import (
+ "slices"
"time"
"github.com/cgrates/birpc/context"
@@ -162,7 +163,7 @@ func (aCfg AsteriskAgentCfg) Clone() (cln *AsteriskAgentCfg) {
CreateCDR: aCfg.CreateCDR,
}
if aCfg.SessionSConns != nil {
- cln.SessionSConns = utils.CloneStringSlice(aCfg.SessionSConns)
+ cln.SessionSConns = slices.Clone(aCfg.SessionSConns)
}
if aCfg.AsteriskConns != nil {
cln.AsteriskConns = make([]*AsteriskConnCfg, len(aCfg.AsteriskConns))
@@ -241,7 +242,7 @@ func diffAsteriskAgentJsonCfg(d *AsteriskAgentJsonCfg, v1, v2 *AsteriskAgentCfg)
if v1.Enabled != v2.Enabled {
d.Enabled = utils.BoolPointer(v2.Enabled)
}
- if !utils.SliceStringEqual(v1.SessionSConns, v2.SessionSConns) {
+ if !slices.Equal(v1.SessionSConns, v2.SessionSConns) {
d.Sessions_conns = utils.SliceStringPointer(getBiRPCInternalJSONConns(v2.SessionSConns))
}
if v1.CreateCDR != v2.CreateCDR {
diff --git a/config/attributescfg.go b/config/attributescfg.go
index bb2bc986c..2000f909e 100644
--- a/config/attributescfg.go
+++ b/config/attributescfg.go
@@ -19,6 +19,8 @@ along with this program. If not, see
package config
import (
+ "slices"
+
"github.com/cgrates/birpc/context"
"github.com/cgrates/cgrates/utils"
)
@@ -101,19 +103,19 @@ func (alS *AttributeSCfg) loadFromJSONCfg(jsnCfg *AttributeSJsonCfg) (err error)
alS.IndexedSelects = *jsnCfg.Indexed_selects
}
if jsnCfg.String_indexed_fields != nil {
- alS.StringIndexedFields = utils.SliceStringPointer(utils.CloneStringSlice(*jsnCfg.String_indexed_fields))
+ alS.StringIndexedFields = utils.SliceStringPointer(slices.Clone(*jsnCfg.String_indexed_fields))
}
if jsnCfg.Prefix_indexed_fields != nil {
- alS.PrefixIndexedFields = utils.SliceStringPointer(utils.CloneStringSlice(*jsnCfg.Prefix_indexed_fields))
+ alS.PrefixIndexedFields = utils.SliceStringPointer(slices.Clone(*jsnCfg.Prefix_indexed_fields))
}
if jsnCfg.Suffix_indexed_fields != nil {
- alS.SuffixIndexedFields = utils.SliceStringPointer(utils.CloneStringSlice(*jsnCfg.Suffix_indexed_fields))
+ alS.SuffixIndexedFields = utils.SliceStringPointer(slices.Clone(*jsnCfg.Suffix_indexed_fields))
}
if jsnCfg.Exists_indexed_fields != nil {
- alS.ExistsIndexedFields = utils.SliceStringPointer(utils.CloneStringSlice(*jsnCfg.Exists_indexed_fields))
+ alS.ExistsIndexedFields = utils.SliceStringPointer(slices.Clone(*jsnCfg.Exists_indexed_fields))
}
if jsnCfg.Notexists_indexed_fields != nil {
- alS.NotExistsIndexedFields = utils.SliceStringPointer(utils.CloneStringSlice(*jsnCfg.Notexists_indexed_fields))
+ alS.NotExistsIndexedFields = utils.SliceStringPointer(slices.Clone(*jsnCfg.Notexists_indexed_fields))
}
if jsnCfg.Nested_fields != nil {
alS.NestedFields = *jsnCfg.Nested_fields
@@ -139,19 +141,19 @@ func (alS AttributeSCfg) AsMapInterface(string) any {
utils.OptsCfg: opts,
}
if alS.StringIndexedFields != nil {
- mp[utils.StringIndexedFieldsCfg] = utils.CloneStringSlice(*alS.StringIndexedFields)
+ mp[utils.StringIndexedFieldsCfg] = slices.Clone(*alS.StringIndexedFields)
}
if alS.PrefixIndexedFields != nil {
- mp[utils.PrefixIndexedFieldsCfg] = utils.CloneStringSlice(*alS.PrefixIndexedFields)
+ mp[utils.PrefixIndexedFieldsCfg] = slices.Clone(*alS.PrefixIndexedFields)
}
if alS.SuffixIndexedFields != nil {
- mp[utils.SuffixIndexedFieldsCfg] = utils.CloneStringSlice(*alS.SuffixIndexedFields)
+ mp[utils.SuffixIndexedFieldsCfg] = slices.Clone(*alS.SuffixIndexedFields)
}
if alS.ExistsIndexedFields != nil {
- mp[utils.ExistsIndexedFieldsCfg] = utils.CloneStringSlice(*alS.ExistsIndexedFields)
+ mp[utils.ExistsIndexedFieldsCfg] = slices.Clone(*alS.ExistsIndexedFields)
}
if alS.NotExistsIndexedFields != nil {
- mp[utils.NotExistsIndexedFieldsCfg] = utils.CloneStringSlice(*alS.NotExistsIndexedFields)
+ mp[utils.NotExistsIndexedFieldsCfg] = slices.Clone(*alS.NotExistsIndexedFields)
}
if alS.StatSConns != nil {
mp[utils.StatSConnsCfg] = getInternalJSONConns(alS.StatSConns)
@@ -202,29 +204,29 @@ func (alS AttributeSCfg) Clone() (cln *AttributeSCfg) {
Opts: alS.Opts.Clone(),
}
if alS.ResourceSConns != nil {
- cln.ResourceSConns = utils.CloneStringSlice(alS.ResourceSConns)
+ cln.ResourceSConns = slices.Clone(alS.ResourceSConns)
}
if alS.StatSConns != nil {
- cln.StatSConns = utils.CloneStringSlice(alS.StatSConns)
+ cln.StatSConns = slices.Clone(alS.StatSConns)
}
if alS.AccountSConns != nil {
- cln.AccountSConns = utils.CloneStringSlice(alS.AccountSConns)
+ cln.AccountSConns = slices.Clone(alS.AccountSConns)
}
if alS.StringIndexedFields != nil {
- cln.StringIndexedFields = utils.SliceStringPointer(utils.CloneStringSlice(*alS.StringIndexedFields))
+ cln.StringIndexedFields = utils.SliceStringPointer(slices.Clone(*alS.StringIndexedFields))
}
if alS.PrefixIndexedFields != nil {
- cln.PrefixIndexedFields = utils.SliceStringPointer(utils.CloneStringSlice(*alS.PrefixIndexedFields))
+ cln.PrefixIndexedFields = utils.SliceStringPointer(slices.Clone(*alS.PrefixIndexedFields))
}
if alS.SuffixIndexedFields != nil {
- cln.SuffixIndexedFields = utils.SliceStringPointer(utils.CloneStringSlice(*alS.SuffixIndexedFields))
+ cln.SuffixIndexedFields = utils.SliceStringPointer(slices.Clone(*alS.SuffixIndexedFields))
}
if alS.ExistsIndexedFields != nil {
- cln.ExistsIndexedFields = utils.SliceStringPointer(utils.CloneStringSlice(*alS.ExistsIndexedFields))
+ cln.ExistsIndexedFields = utils.SliceStringPointer(slices.Clone(*alS.ExistsIndexedFields))
}
if alS.NotExistsIndexedFields != nil {
- cln.NotExistsIndexedFields = utils.SliceStringPointer(utils.CloneStringSlice(*alS.NotExistsIndexedFields))
+ cln.NotExistsIndexedFields = utils.SliceStringPointer(slices.Clone(*alS.NotExistsIndexedFields))
}
return
}
@@ -278,13 +280,13 @@ func diffAttributeSJsonCfg(d *AttributeSJsonCfg, v1, v2 *AttributeSCfg) *Attribu
if v1.Enabled != v2.Enabled {
d.Enabled = utils.BoolPointer(v2.Enabled)
}
- if !utils.SliceStringEqual(v1.ResourceSConns, v2.ResourceSConns) {
+ if !slices.Equal(v1.ResourceSConns, v2.ResourceSConns) {
d.Stats_conns = utils.SliceStringPointer(getInternalJSONConns(v2.ResourceSConns))
}
- if !utils.SliceStringEqual(v1.StatSConns, v2.StatSConns) {
+ if !slices.Equal(v1.StatSConns, v2.StatSConns) {
d.Resources_conns = utils.SliceStringPointer(getInternalJSONConns(v2.StatSConns))
}
- if !utils.SliceStringEqual(v1.AccountSConns, v2.AccountSConns) {
+ if !slices.Equal(v1.AccountSConns, v2.AccountSConns) {
d.Accounts_conns = utils.SliceStringPointer(getInternalJSONConns(v2.AccountSConns))
}
if v1.IndexedSelects != v2.IndexedSelects {
@@ -306,8 +308,8 @@ func diffIndexSlice(d, v1, v2 *[]string) *[]string {
if v2 == nil {
return nil
}
- if v1 == nil || !utils.SliceStringEqual(*v1, *v2) {
- d = utils.SliceStringPointer(utils.CloneStringSlice(*v2))
+ if v1 == nil || !slices.Equal(*v1, *v2) {
+ d = utils.SliceStringPointer(slices.Clone(*v2))
}
return d
}
diff --git a/config/cachecfg.go b/config/cachecfg.go
index c29d7b3a9..a11bf9411 100644
--- a/config/cachecfg.go
+++ b/config/cachecfg.go
@@ -20,6 +20,7 @@ package config
import (
"fmt"
+ "slices"
"time"
"github.com/cgrates/birpc/context"
@@ -175,10 +176,10 @@ func (cCfg CacheCfg) Clone() (cln *CacheCfg) {
cln.Partitions[key] = par.Clone()
}
if cCfg.ReplicationConns != nil {
- cln.ReplicationConns = utils.CloneStringSlice(cCfg.ReplicationConns)
+ cln.ReplicationConns = slices.Clone(cCfg.ReplicationConns)
}
if cCfg.RemoteConns != nil {
- cln.RemoteConns = utils.CloneStringSlice(cCfg.RemoteConns)
+ cln.RemoteConns = slices.Clone(cCfg.RemoteConns)
}
return
}
@@ -220,10 +221,10 @@ func diffCacheJsonCfg(d *CacheJsonCfg, v1, v2 *CacheCfg) *CacheJsonCfg {
d = new(CacheJsonCfg)
}
d.Partitions = diffCacheParamsJsonCfg(d.Partitions, v2.Partitions)
- if !utils.SliceStringEqual(v1.ReplicationConns, v2.ReplicationConns) {
+ if !slices.Equal(v1.ReplicationConns, v2.ReplicationConns) {
d.Replication_conns = &v2.ReplicationConns
}
- if !utils.SliceStringEqual(v1.RemoteConns, v2.RemoteConns) {
+ if !slices.Equal(v1.RemoteConns, v2.RemoteConns) {
d.Remote_conns = &v2.RemoteConns
}
return d
diff --git a/config/cdrscfg.go b/config/cdrscfg.go
index 35ab2c4c5..18458ab07 100644
--- a/config/cdrscfg.go
+++ b/config/cdrscfg.go
@@ -19,6 +19,8 @@ along with this program. If not, see
package config
import (
+ "slices"
+
"github.com/cgrates/birpc/context"
"github.com/cgrates/cgrates/utils"
)
@@ -165,7 +167,7 @@ func (cdrscfg CdrsCfg) AsMapInterface(string) any {
utils.SMCostRetriesCfg: cdrscfg.SMCostRetries,
utils.StoreCdrsCfg: cdrscfg.StoreCdrs,
utils.ExtraFieldsCfg: cdrscfg.ExtraFields.AsStringSlice(),
- utils.OnlineCDRExportsCfg: utils.CloneStringSlice(cdrscfg.OnlineCDRExports),
+ utils.OnlineCDRExportsCfg: slices.Clone(cdrscfg.OnlineCDRExports),
utils.OptsCfg: opts,
}
@@ -249,31 +251,31 @@ func (cdrscfg CdrsCfg) Clone() (cln *CdrsCfg) {
Opts: cdrscfg.Opts.Clone(),
}
if cdrscfg.ChargerSConns != nil {
- cln.ChargerSConns = utils.CloneStringSlice(cdrscfg.ChargerSConns)
+ cln.ChargerSConns = slices.Clone(cdrscfg.ChargerSConns)
}
if cdrscfg.AttributeSConns != nil {
- cln.AttributeSConns = utils.CloneStringSlice(cdrscfg.AttributeSConns)
+ cln.AttributeSConns = slices.Clone(cdrscfg.AttributeSConns)
}
if cdrscfg.ThresholdSConns != nil {
- cln.ThresholdSConns = utils.CloneStringSlice(cdrscfg.ThresholdSConns)
+ cln.ThresholdSConns = slices.Clone(cdrscfg.ThresholdSConns)
}
if cdrscfg.StatSConns != nil {
- cln.StatSConns = utils.CloneStringSlice(cdrscfg.StatSConns)
+ cln.StatSConns = slices.Clone(cdrscfg.StatSConns)
}
if cdrscfg.OnlineCDRExports != nil {
- cln.OnlineCDRExports = utils.CloneStringSlice(cdrscfg.OnlineCDRExports)
+ cln.OnlineCDRExports = slices.Clone(cdrscfg.OnlineCDRExports)
}
if cdrscfg.ActionSConns != nil {
- cln.ActionSConns = utils.CloneStringSlice(cdrscfg.ActionSConns)
+ cln.ActionSConns = slices.Clone(cdrscfg.ActionSConns)
}
if cdrscfg.EEsConns != nil {
- cln.EEsConns = utils.CloneStringSlice(cdrscfg.EEsConns)
+ cln.EEsConns = slices.Clone(cdrscfg.EEsConns)
}
if cdrscfg.RateSConns != nil {
- cln.RateSConns = utils.CloneStringSlice(cdrscfg.RateSConns)
+ cln.RateSConns = slices.Clone(cdrscfg.RateSConns)
}
if cdrscfg.AccountSConns != nil {
- cln.AccountSConns = utils.CloneStringSlice(cdrscfg.AccountSConns)
+ cln.AccountSConns = slices.Clone(cdrscfg.AccountSConns)
}
return
@@ -344,7 +346,7 @@ func diffCdrsJsonCfg(d *CdrsJsonCfg, v1, v2 *CdrsCfg) *CdrsJsonCfg {
}
extra1 := v1.ExtraFields.AsStringSlice()
extra2 := v2.ExtraFields.AsStringSlice()
- if !utils.SliceStringEqual(extra1, extra2) {
+ if !slices.Equal(extra1, extra2) {
d.Extra_fields = &extra2
}
if v1.StoreCdrs != v2.StoreCdrs {
@@ -353,31 +355,31 @@ func diffCdrsJsonCfg(d *CdrsJsonCfg, v1, v2 *CdrsCfg) *CdrsJsonCfg {
if v1.SMCostRetries != v2.SMCostRetries {
d.Session_cost_retries = utils.IntPointer(v2.SMCostRetries)
}
- if !utils.SliceStringEqual(v1.ChargerSConns, v2.ChargerSConns) {
+ if !slices.Equal(v1.ChargerSConns, v2.ChargerSConns) {
d.Chargers_conns = utils.SliceStringPointer(getInternalJSONConns(v2.ChargerSConns))
}
- if !utils.SliceStringEqual(v1.AttributeSConns, v2.AttributeSConns) {
+ if !slices.Equal(v1.AttributeSConns, v2.AttributeSConns) {
d.Attributes_conns = utils.SliceStringPointer(getInternalJSONConns(v2.AttributeSConns))
}
- if !utils.SliceStringEqual(v1.ThresholdSConns, v2.ThresholdSConns) {
+ if !slices.Equal(v1.ThresholdSConns, v2.ThresholdSConns) {
d.Thresholds_conns = utils.SliceStringPointer(getInternalJSONConns(v2.ThresholdSConns))
}
- if !utils.SliceStringEqual(v1.StatSConns, v2.StatSConns) {
+ if !slices.Equal(v1.StatSConns, v2.StatSConns) {
d.Stats_conns = utils.SliceStringPointer(getInternalJSONConns(v2.StatSConns))
}
- if !utils.SliceStringEqual(v1.OnlineCDRExports, v2.OnlineCDRExports) {
+ if !slices.Equal(v1.OnlineCDRExports, v2.OnlineCDRExports) {
d.Online_cdr_exports = &v2.OnlineCDRExports
}
- if !utils.SliceStringEqual(v1.ActionSConns, v2.ActionSConns) {
+ if !slices.Equal(v1.ActionSConns, v2.ActionSConns) {
d.Actions_conns = utils.SliceStringPointer(getInternalJSONConns(v2.ActionSConns))
}
- if !utils.SliceStringEqual(v1.EEsConns, v2.EEsConns) {
+ if !slices.Equal(v1.EEsConns, v2.EEsConns) {
d.Ees_conns = utils.SliceStringPointer(getInternalJSONConns(v2.EEsConns))
}
- if !utils.SliceStringEqual(v1.RateSConns, v2.RateSConns) {
+ if !slices.Equal(v1.RateSConns, v2.RateSConns) {
d.Rates_conns = utils.SliceStringPointer(getInternalJSONConns(v2.RateSConns))
}
- if !utils.SliceStringEqual(v1.AccountSConns, v2.AccountSConns) {
+ if !slices.Equal(v1.AccountSConns, v2.AccountSConns) {
d.Accounts_conns = utils.SliceStringPointer(getInternalJSONConns(v2.AccountSConns))
}
d.Opts = diffCdrsOptsJsonCfg(d.Opts, v1.Opts, v2.Opts)
diff --git a/config/chargerscfg.go b/config/chargerscfg.go
index 2f7a7942c..87cf0f9c0 100644
--- a/config/chargerscfg.go
+++ b/config/chargerscfg.go
@@ -19,6 +19,8 @@ along with this program. If not, see
package config
import (
+ "slices"
+
"github.com/cgrates/birpc/context"
"github.com/cgrates/cgrates/utils"
)
@@ -59,19 +61,19 @@ func (cS *ChargerSCfg) loadFromJSONCfg(jsnCfg *ChargerSJsonCfg) (err error) {
cS.AttributeSConns = updateInternalConns(*jsnCfg.Attributes_conns, utils.MetaAttributes)
}
if jsnCfg.String_indexed_fields != nil {
- cS.StringIndexedFields = utils.SliceStringPointer(utils.CloneStringSlice(*jsnCfg.String_indexed_fields))
+ cS.StringIndexedFields = utils.SliceStringPointer(slices.Clone(*jsnCfg.String_indexed_fields))
}
if jsnCfg.Prefix_indexed_fields != nil {
- cS.PrefixIndexedFields = utils.SliceStringPointer(utils.CloneStringSlice(*jsnCfg.Prefix_indexed_fields))
+ cS.PrefixIndexedFields = utils.SliceStringPointer(slices.Clone(*jsnCfg.Prefix_indexed_fields))
}
if jsnCfg.Suffix_indexed_fields != nil {
- cS.SuffixIndexedFields = utils.SliceStringPointer(utils.CloneStringSlice(*jsnCfg.Suffix_indexed_fields))
+ cS.SuffixIndexedFields = utils.SliceStringPointer(slices.Clone(*jsnCfg.Suffix_indexed_fields))
}
if jsnCfg.Exists_indexed_fields != nil {
- cS.ExistsIndexedFields = utils.SliceStringPointer(utils.CloneStringSlice(*jsnCfg.Exists_indexed_fields))
+ cS.ExistsIndexedFields = utils.SliceStringPointer(slices.Clone(*jsnCfg.Exists_indexed_fields))
}
if jsnCfg.Notexists_indexed_fields != nil {
- cS.NotExistsIndexedFields = utils.SliceStringPointer(utils.CloneStringSlice(*jsnCfg.Notexists_indexed_fields))
+ cS.NotExistsIndexedFields = utils.SliceStringPointer(slices.Clone(*jsnCfg.Notexists_indexed_fields))
}
if jsnCfg.Nested_fields != nil {
cS.NestedFields = *jsnCfg.Nested_fields
@@ -90,19 +92,19 @@ func (cS ChargerSCfg) AsMapInterface(string) any {
mp[utils.AttributeSConnsCfg] = getInternalJSONConns(cS.AttributeSConns)
}
if cS.StringIndexedFields != nil {
- mp[utils.StringIndexedFieldsCfg] = utils.CloneStringSlice(*cS.StringIndexedFields)
+ mp[utils.StringIndexedFieldsCfg] = slices.Clone(*cS.StringIndexedFields)
}
if cS.PrefixIndexedFields != nil {
- mp[utils.PrefixIndexedFieldsCfg] = utils.CloneStringSlice(*cS.PrefixIndexedFields)
+ mp[utils.PrefixIndexedFieldsCfg] = slices.Clone(*cS.PrefixIndexedFields)
}
if cS.SuffixIndexedFields != nil {
- mp[utils.SuffixIndexedFieldsCfg] = utils.CloneStringSlice(*cS.SuffixIndexedFields)
+ mp[utils.SuffixIndexedFieldsCfg] = slices.Clone(*cS.SuffixIndexedFields)
}
if cS.ExistsIndexedFields != nil {
- mp[utils.ExistsIndexedFieldsCfg] = utils.CloneStringSlice(*cS.ExistsIndexedFields)
+ mp[utils.ExistsIndexedFieldsCfg] = slices.Clone(*cS.ExistsIndexedFields)
}
if cS.NotExistsIndexedFields != nil {
- mp[utils.NotExistsIndexedFieldsCfg] = utils.CloneStringSlice(*cS.NotExistsIndexedFields)
+ mp[utils.NotExistsIndexedFieldsCfg] = slices.Clone(*cS.NotExistsIndexedFields)
}
return mp
}
@@ -118,23 +120,23 @@ func (cS ChargerSCfg) Clone() (cln *ChargerSCfg) {
NestedFields: cS.NestedFields,
}
if cS.AttributeSConns != nil {
- cln.AttributeSConns = utils.CloneStringSlice(cS.AttributeSConns)
+ cln.AttributeSConns = slices.Clone(cS.AttributeSConns)
}
if cS.StringIndexedFields != nil {
- cln.StringIndexedFields = utils.SliceStringPointer(utils.CloneStringSlice(*cS.StringIndexedFields))
+ cln.StringIndexedFields = utils.SliceStringPointer(slices.Clone(*cS.StringIndexedFields))
}
if cS.PrefixIndexedFields != nil {
- cln.PrefixIndexedFields = utils.SliceStringPointer(utils.CloneStringSlice(*cS.PrefixIndexedFields))
+ cln.PrefixIndexedFields = utils.SliceStringPointer(slices.Clone(*cS.PrefixIndexedFields))
}
if cS.SuffixIndexedFields != nil {
- cln.SuffixIndexedFields = utils.SliceStringPointer(utils.CloneStringSlice(*cS.SuffixIndexedFields))
+ cln.SuffixIndexedFields = utils.SliceStringPointer(slices.Clone(*cS.SuffixIndexedFields))
}
if cS.ExistsIndexedFields != nil {
- cln.ExistsIndexedFields = utils.SliceStringPointer(utils.CloneStringSlice(*cS.ExistsIndexedFields))
+ cln.ExistsIndexedFields = utils.SliceStringPointer(slices.Clone(*cS.ExistsIndexedFields))
}
if cS.NotExistsIndexedFields != nil {
- cln.NotExistsIndexedFields = utils.SliceStringPointer(utils.CloneStringSlice(*cS.NotExistsIndexedFields))
+ cln.NotExistsIndexedFields = utils.SliceStringPointer(slices.Clone(*cS.NotExistsIndexedFields))
}
return
}
@@ -162,7 +164,7 @@ func diffChargerSJsonCfg(d *ChargerSJsonCfg, v1, v2 *ChargerSCfg) *ChargerSJsonC
if v1.IndexedSelects != v2.IndexedSelects {
d.Indexed_selects = utils.BoolPointer(v2.IndexedSelects)
}
- if !utils.SliceStringEqual(v1.AttributeSConns, v2.AttributeSConns) {
+ if !slices.Equal(v1.AttributeSConns, v2.AttributeSConns) {
d.Attributes_conns = utils.SliceStringPointer(getInternalJSONConns(v2.AttributeSConns))
}
d.String_indexed_fields = diffIndexSlice(d.String_indexed_fields, v1.StringIndexedFields, v2.StringIndexedFields)
diff --git a/config/configsanity.go b/config/configsanity.go
index 70f2b022f..a04d588c9 100644
--- a/config/configsanity.go
+++ b/config/configsanity.go
@@ -23,6 +23,7 @@ import (
"math"
"os"
"path"
+ "slices"
"strings"
"github.com/cgrates/cgrates/utils"
@@ -450,10 +451,10 @@ func (cfg *CGRConfig) checkConfigSanity() error {
return fmt.Errorf("<%s> template with ID <%s> has connection with id: <%s> not defined", utils.HTTPAgent, httpAgentCfg.ID, connID)
}
}
- if !utils.SliceHasMember([]string{utils.MetaUrl, utils.MetaXml}, httpAgentCfg.RequestPayload) {
+ if !slices.Contains([]string{utils.MetaUrl, utils.MetaXml}, httpAgentCfg.RequestPayload) {
return fmt.Errorf("<%s> unsupported request payload %s", utils.HTTPAgent, httpAgentCfg.RequestPayload)
}
- if !utils.SliceHasMember([]string{utils.MetaTextPlain, utils.MetaXml}, httpAgentCfg.ReplyPayload) {
+ if !slices.Contains([]string{utils.MetaTextPlain, utils.MetaXml}, httpAgentCfg.ReplyPayload) {
return fmt.Errorf("<%s> unsupported reply payload %s", utils.HTTPAgent, httpAgentCfg.ReplyPayload)
}
for _, req := range httpAgentCfg.RequestProcessors {
@@ -746,7 +747,7 @@ func (cfg *CGRConfig) checkConfigSanity() error {
}
// The following sanity check prevents a "slice bounds out of range" panic.
if rdr.Type == utils.MetaFileXML && len(field.Value) != 0 &&
- !utils.IsSliceMember([]string{utils.MetaNone, utils.MetaConstant}, field.Type) {
+ !slices.Contains([]string{utils.MetaNone, utils.MetaConstant}, field.Type) {
// Find the minimum rule length for dynamic RSRParser within the field value.
minRuleLength := math.MaxInt
@@ -857,7 +858,7 @@ func (cfg *CGRConfig) checkConfigSanity() error {
// StorDB sanity checks
if cfg.storDbCfg.Type == utils.Postgres {
- if !utils.IsSliceMember([]string{utils.PostgresSSLModeDisable, utils.PostgresSSLModeAllow,
+ if !slices.Contains([]string{utils.PostgresSSLModeDisable, utils.PostgresSSLModeAllow,
utils.PostgresSSLModePrefer, utils.PostgresSSLModeRequire, utils.PostgresSSLModeVerifyCa,
utils.PostgresSSLModeVerifyFull}, cfg.storDbCfg.Opts.PgSSLMode) {
return fmt.Errorf("<%s> unsupported ssl mode for storDB", utils.StorDB)
@@ -1006,7 +1007,7 @@ func (cfg *CGRConfig) checkConfigSanity() error {
}
for tnt, hosts := range cfg.registrarCCfg.Dispatchers.Hosts {
for _, host := range hosts {
- if !utils.SliceHasMember([]string{utils.MetaGOB, rpcclient.HTTPjson, utils.MetaJSON, rpcclient.BiRPCJSON, rpcclient.BiRPCGOB}, host.Transport) {
+ if !slices.Contains([]string{utils.MetaGOB, rpcclient.HTTPjson, utils.MetaJSON, rpcclient.BiRPCJSON, rpcclient.BiRPCGOB}, host.Transport) {
return fmt.Errorf("<%s> unsupported transport <%s> for host <%s>", utils.RegistrarC, host.Transport, utils.ConcatenatedKey(tnt, host.ID))
}
}
@@ -1037,7 +1038,7 @@ func (cfg *CGRConfig) checkConfigSanity() error {
}
for tnt, hosts := range cfg.registrarCCfg.RPC.Hosts {
for _, host := range hosts {
- if !utils.SliceHasMember([]string{utils.MetaGOB, rpcclient.HTTPjson, utils.MetaJSON, rpcclient.BiRPCJSON, rpcclient.BiRPCGOB}, host.Transport) {
+ if !slices.Contains([]string{utils.MetaGOB, rpcclient.HTTPjson, utils.MetaJSON, rpcclient.BiRPCJSON, rpcclient.BiRPCGOB}, host.Transport) {
return fmt.Errorf("<%s> unsupported transport <%s> for host <%s>", utils.RegistrarC, host.Transport, utils.ConcatenatedKey(tnt, host.ID))
}
}
diff --git a/config/corescfg.go b/config/corescfg.go
index aca8624c1..c73dcb7b4 100644
--- a/config/corescfg.go
+++ b/config/corescfg.go
@@ -19,6 +19,7 @@ along with this program. If not, see
package config
import (
+ "slices"
"time"
"github.com/cgrates/birpc/context"
@@ -101,7 +102,7 @@ func (cS CoreSCfg) Clone() (cln *CoreSCfg) {
ShutdownTimeout: cS.ShutdownTimeout,
}
if cS.EEsConns != nil {
- cln.EEsConns = utils.CloneStringSlice(cS.EEsConns)
+ cln.EEsConns = slices.Clone(cS.EEsConns)
}
return
@@ -128,7 +129,7 @@ func diffCoreSJsonCfg(d *CoreSJsonCfg, v1, v2 *CoreSCfg) *CoreSJsonCfg {
if v1.CapsStatsInterval != v2.CapsStatsInterval {
d.Caps_stats_interval = utils.StringPointer(v2.CapsStatsInterval.String())
}
- if !utils.SliceStringEqual(v1.EEsConns, v2.EEsConns) {
+ if !slices.Equal(v1.EEsConns, v2.EEsConns) {
d.Ees_conns = utils.SliceStringPointer(getInternalJSONConns(v2.EEsConns))
}
if v1.ShutdownTimeout != v2.ShutdownTimeout {
diff --git a/config/datadbcfg.go b/config/datadbcfg.go
index 22a6e6438..7dd3bb404 100644
--- a/config/datadbcfg.go
+++ b/config/datadbcfg.go
@@ -20,6 +20,7 @@ package config
import (
"fmt"
+ "slices"
"strconv"
"strings"
"time"
@@ -280,10 +281,10 @@ func (dbcfg DataDbCfg) Clone() (cln *DataDbCfg) {
cln.Items[k] = itm.Clone()
}
if dbcfg.RmtConns != nil {
- cln.RmtConns = utils.CloneStringSlice(dbcfg.RmtConns)
+ cln.RmtConns = slices.Clone(dbcfg.RmtConns)
}
if dbcfg.RplConns != nil {
- cln.RplConns = utils.CloneStringSlice(dbcfg.RplConns)
+ cln.RplConns = slices.Clone(dbcfg.RplConns)
}
return
}
@@ -584,13 +585,13 @@ func diffDataDBJsonCfg(d *DbJsonCfg, v1, v2 *DataDbCfg) *DbJsonCfg {
if v1.Password != v2.Password {
d.Db_password = utils.StringPointer(v2.Password)
}
- if !utils.SliceStringEqual(v1.RmtConns, v2.RmtConns) {
+ if !slices.Equal(v1.RmtConns, v2.RmtConns) {
d.Remote_conns = &v2.RmtConns
}
if v1.RmtConnID != v2.RmtConnID {
d.Remote_conn_id = utils.StringPointer(v2.RmtConnID)
}
- if !utils.SliceStringEqual(v1.RplConns, v2.RplConns) {
+ if !slices.Equal(v1.RplConns, v2.RplConns) {
d.Replication_conns = &v2.RplConns
}
if v1.RplFiltered != v2.RplFiltered {
diff --git a/config/diametercfg.go b/config/diametercfg.go
index 0a547b7d3..1c5706fc0 100644
--- a/config/diametercfg.go
+++ b/config/diametercfg.go
@@ -19,6 +19,8 @@ along with this program. If not, see
package config
import (
+ "slices"
+
"github.com/cgrates/birpc/context"
"github.com/cgrates/cgrates/utils"
)
@@ -152,7 +154,7 @@ func (da DiameterAgentCfg) Clone() (cln *DiameterAgentCfg) {
ForcedDisconnect: da.ForcedDisconnect,
}
if da.SessionSConns != nil {
- cln.SessionSConns = utils.CloneStringSlice(da.SessionSConns)
+ cln.SessionSConns = slices.Clone(da.SessionSConns)
}
if da.RequestProcessors != nil {
cln.RequestProcessors = make([]*RequestProcessor, len(da.RequestProcessors))
@@ -198,7 +200,7 @@ func diffDiameterAgentJsonCfg(d *DiameterAgentJsonCfg, v1, v2 *DiameterAgentCfg,
if v1.DictionariesPath != v2.DictionariesPath {
d.Dictionaries_path = utils.StringPointer(v2.DictionariesPath)
}
- if !utils.SliceStringEqual(v1.SessionSConns, v2.SessionSConns) {
+ if !slices.Equal(v1.SessionSConns, v2.SessionSConns) {
d.Sessions_conns = utils.SliceStringPointer(getBiRPCInternalJSONConns(v2.SessionSConns))
}
if v1.OriginHost != v2.OriginHost {
diff --git a/config/dispatcherscfg.go b/config/dispatcherscfg.go
index 1ddef72fd..6dea976a4 100644
--- a/config/dispatcherscfg.go
+++ b/config/dispatcherscfg.go
@@ -19,6 +19,8 @@ along with this program. If not, see
package config
import (
+ "slices"
+
"github.com/cgrates/birpc/context"
"github.com/cgrates/cgrates/utils"
)
@@ -74,19 +76,19 @@ func (dps *DispatcherSCfg) loadFromJSONCfg(jsnCfg *DispatcherSJsonCfg) (err erro
dps.IndexedSelects = *jsnCfg.Indexed_selects
}
if jsnCfg.String_indexed_fields != nil {
- dps.StringIndexedFields = utils.SliceStringPointer(utils.CloneStringSlice(*jsnCfg.String_indexed_fields))
+ dps.StringIndexedFields = utils.SliceStringPointer(slices.Clone(*jsnCfg.String_indexed_fields))
}
if jsnCfg.Prefix_indexed_fields != nil {
- dps.PrefixIndexedFields = utils.SliceStringPointer(utils.CloneStringSlice(*jsnCfg.Prefix_indexed_fields))
+ dps.PrefixIndexedFields = utils.SliceStringPointer(slices.Clone(*jsnCfg.Prefix_indexed_fields))
}
if jsnCfg.Suffix_indexed_fields != nil {
- dps.SuffixIndexedFields = utils.SliceStringPointer(utils.CloneStringSlice(*jsnCfg.Suffix_indexed_fields))
+ dps.SuffixIndexedFields = utils.SliceStringPointer(slices.Clone(*jsnCfg.Suffix_indexed_fields))
}
if jsnCfg.Exists_indexed_fields != nil {
- dps.ExistsIndexedFields = utils.SliceStringPointer(utils.CloneStringSlice(*jsnCfg.Exists_indexed_fields))
+ dps.ExistsIndexedFields = utils.SliceStringPointer(slices.Clone(*jsnCfg.Exists_indexed_fields))
}
if jsnCfg.Notexists_indexed_fields != nil {
- dps.NotExistsIndexedFields = utils.SliceStringPointer(utils.CloneStringSlice(*jsnCfg.Notexists_indexed_fields))
+ dps.NotExistsIndexedFields = utils.SliceStringPointer(slices.Clone(*jsnCfg.Notexists_indexed_fields))
}
if jsnCfg.Attributes_conns != nil {
dps.AttributeSConns = updateInternalConnsWithPrfx(*jsnCfg.Attributes_conns, utils.MetaAttributes, utils.MetaDispatchers)
@@ -112,22 +114,22 @@ func (dps DispatcherSCfg) AsMapInterface(string) any {
utils.OptsCfg: opts,
}
if dps.StringIndexedFields != nil {
- mp[utils.StringIndexedFieldsCfg] = utils.CloneStringSlice(*dps.StringIndexedFields)
+ mp[utils.StringIndexedFieldsCfg] = slices.Clone(*dps.StringIndexedFields)
}
if dps.PrefixIndexedFields != nil {
- mp[utils.PrefixIndexedFieldsCfg] = utils.CloneStringSlice(*dps.PrefixIndexedFields)
+ mp[utils.PrefixIndexedFieldsCfg] = slices.Clone(*dps.PrefixIndexedFields)
}
if dps.SuffixIndexedFields != nil {
- mp[utils.SuffixIndexedFieldsCfg] = utils.CloneStringSlice(*dps.SuffixIndexedFields)
+ mp[utils.SuffixIndexedFieldsCfg] = slices.Clone(*dps.SuffixIndexedFields)
}
if dps.AttributeSConns != nil {
mp[utils.AttributeSConnsCfg] = getInternalJSONConnsWithPrfx(dps.AttributeSConns, utils.MetaDispatchers)
}
if dps.ExistsIndexedFields != nil {
- mp[utils.ExistsIndexedFieldsCfg] = utils.CloneStringSlice(*dps.ExistsIndexedFields)
+ mp[utils.ExistsIndexedFieldsCfg] = slices.Clone(*dps.ExistsIndexedFields)
}
if dps.NotExistsIndexedFields != nil {
- mp[utils.NotExistsIndexedFieldsCfg] = utils.CloneStringSlice(*dps.NotExistsIndexedFields)
+ mp[utils.NotExistsIndexedFieldsCfg] = slices.Clone(*dps.NotExistsIndexedFields)
}
return mp
}
@@ -155,22 +157,22 @@ func (dps DispatcherSCfg) Clone() (cln *DispatcherSCfg) {
}
if dps.AttributeSConns != nil {
- cln.AttributeSConns = utils.CloneStringSlice(dps.AttributeSConns)
+ cln.AttributeSConns = slices.Clone(dps.AttributeSConns)
}
if dps.StringIndexedFields != nil {
- cln.StringIndexedFields = utils.SliceStringPointer(utils.CloneStringSlice(*dps.StringIndexedFields))
+ cln.StringIndexedFields = utils.SliceStringPointer(slices.Clone(*dps.StringIndexedFields))
}
if dps.PrefixIndexedFields != nil {
- cln.PrefixIndexedFields = utils.SliceStringPointer(utils.CloneStringSlice(*dps.PrefixIndexedFields))
+ cln.PrefixIndexedFields = utils.SliceStringPointer(slices.Clone(*dps.PrefixIndexedFields))
}
if dps.SuffixIndexedFields != nil {
- cln.SuffixIndexedFields = utils.SliceStringPointer(utils.CloneStringSlice(*dps.SuffixIndexedFields))
+ cln.SuffixIndexedFields = utils.SliceStringPointer(slices.Clone(*dps.SuffixIndexedFields))
}
if dps.ExistsIndexedFields != nil {
- cln.ExistsIndexedFields = utils.SliceStringPointer(utils.CloneStringSlice(*dps.ExistsIndexedFields))
+ cln.ExistsIndexedFields = utils.SliceStringPointer(slices.Clone(*dps.ExistsIndexedFields))
}
if dps.NotExistsIndexedFields != nil {
- cln.NotExistsIndexedFields = utils.SliceStringPointer(utils.CloneStringSlice(*dps.NotExistsIndexedFields))
+ cln.NotExistsIndexedFields = utils.SliceStringPointer(slices.Clone(*dps.NotExistsIndexedFields))
}
return
}
@@ -220,7 +222,7 @@ func diffDispatcherSJsonCfg(d *DispatcherSJsonCfg, v1, v2 *DispatcherSCfg) *Disp
if v1.NestedFields != v2.NestedFields {
d.Nested_fields = utils.BoolPointer(v2.NestedFields)
}
- if !utils.SliceStringEqual(v1.AttributeSConns, v2.AttributeSConns) {
+ if !slices.Equal(v1.AttributeSConns, v2.AttributeSConns) {
d.Attributes_conns = utils.SliceStringPointer(getInternalJSONConns(v2.AttributeSConns))
}
d.Opts = diffDispatchersOptsJsonCfg(d.Opts, v1.Opts, v2.Opts)
diff --git a/config/dnsagntcfg.go b/config/dnsagntcfg.go
index e235d0ba2..b8515f46c 100644
--- a/config/dnsagntcfg.go
+++ b/config/dnsagntcfg.go
@@ -19,6 +19,8 @@ along with this program. If not, see
package config
import (
+ "slices"
+
"github.com/cgrates/birpc/context"
"github.com/cgrates/cgrates/utils"
)
@@ -124,7 +126,7 @@ func (da DNSAgentCfg) Clone() (cln *DNSAgentCfg) {
copy(cln.Listeners, da.Listeners)
}
if da.SessionSConns != nil {
- cln.SessionSConns = utils.CloneStringSlice(da.SessionSConns)
+ cln.SessionSConns = slices.Clone(da.SessionSConns)
}
if da.RequestProcessors != nil {
cln.RequestProcessors = make([]*RequestProcessor, len(da.RequestProcessors))
@@ -194,7 +196,7 @@ func diffDNSAgentJsonCfg(d *DNSAgentJsonCfg, v1, v2 *DNSAgentCfg, separator stri
d.Listeners = diffListeners
- if !utils.SliceStringEqual(v1.SessionSConns, v2.SessionSConns) {
+ if !slices.Equal(v1.SessionSConns, v2.SessionSConns) {
d.Sessions_conns = utils.SliceStringPointer(getBiRPCInternalJSONConns(v2.SessionSConns))
}
if v1.Timezone != v2.Timezone {
diff --git a/config/eescfg.go b/config/eescfg.go
index 507991804..47443115f 100644
--- a/config/eescfg.go
+++ b/config/eescfg.go
@@ -20,6 +20,7 @@ package config
import (
"reflect"
+ "slices"
"time"
"github.com/cgrates/birpc/context"
@@ -109,7 +110,7 @@ func (eeS EEsCfg) Clone() (cln *EEsCfg) {
Exporters: make([]*EventExporterCfg, len(eeS.Exporters)),
}
if eeS.AttributeSConns != nil {
- cln.AttributeSConns = utils.CloneStringSlice(eeS.AttributeSConns)
+ cln.AttributeSConns = slices.Clone(eeS.AttributeSConns)
}
for key, value := range eeS.Cache {
cln.Cache[key] = value.Clone()
@@ -509,7 +510,7 @@ func (eeC *EventExporterCfg) loadFromJSONCfg(jsnEec *EventExporterJsonCfg, msgTe
eeC.Timezone = *jsnEec.Timezone
}
if jsnEec.Filters != nil {
- eeC.Filters = utils.CloneStringSlice(*jsnEec.Filters)
+ eeC.Filters = slices.Clone(*jsnEec.Filters)
}
if jsnEec.Flags != nil {
eeC.Flags = utils.FlagsWithParamsFromSlice(*jsnEec.Flags)
@@ -518,7 +519,7 @@ func (eeC *EventExporterCfg) loadFromJSONCfg(jsnEec *EventExporterJsonCfg, msgTe
eeC.AttributeSCtx = *jsnEec.Attribute_context
}
if jsnEec.Attribute_ids != nil {
- eeC.AttributeSIDs = utils.CloneStringSlice(*jsnEec.Attribute_ids)
+ eeC.AttributeSIDs = slices.Clone(*jsnEec.Attribute_ids)
}
if jsnEec.Synchronous != nil {
eeC.Synchronous = *jsnEec.Synchronous
@@ -827,13 +828,13 @@ func (eeC EventExporterCfg) Clone() (cln *EventExporterCfg) {
}
if eeC.Filters != nil {
- cln.Filters = utils.CloneStringSlice(eeC.Filters)
+ cln.Filters = slices.Clone(eeC.Filters)
}
if eeC.AttributeSIDs != nil {
- cln.AttributeSIDs = utils.CloneStringSlice(eeC.AttributeSIDs)
+ cln.AttributeSIDs = slices.Clone(eeC.AttributeSIDs)
}
if eeC.EFsConns != nil {
- cln.EFsConns = utils.CloneStringSlice(eeC.EFsConns)
+ cln.EFsConns = slices.Clone(eeC.EFsConns)
}
for idx, fld := range eeC.Fields {
cln.Fields[idx] = fld.Clone()
@@ -1586,15 +1587,15 @@ func diffEventExporterJsonCfg(d *EventExporterJsonCfg, v1, v2 *EventExporterCfg,
if v1.Timezone != v2.Timezone {
d.Timezone = utils.StringPointer(v2.Timezone)
}
- if !utils.SliceStringEqual(v1.Filters, v2.Filters) {
+ if !slices.Equal(v1.Filters, v2.Filters) {
d.Filters = &v2.Filters
}
flgs1 := v1.Flags.SliceFlags()
flgs2 := v2.Flags.SliceFlags()
- if !utils.SliceStringEqual(flgs1, flgs2) {
+ if !slices.Equal(flgs1, flgs2) {
d.Flags = &flgs2
}
- if !utils.SliceStringEqual(v1.AttributeSIDs, v2.AttributeSIDs) {
+ if !slices.Equal(v1.AttributeSIDs, v2.AttributeSIDs) {
d.Attribute_ids = &v2.AttributeSIDs
}
if v1.AttributeSCtx != v2.AttributeSCtx {
@@ -1623,7 +1624,7 @@ func diffEventExporterJsonCfg(d *EventExporterJsonCfg, v1, v2 *EventExporterCfg,
if v1.FailedPostsDir != v2.FailedPostsDir {
d.Failed_posts_dir = utils.StringPointer(v2.FailedPostsDir)
}
- if !utils.SliceStringEqual(v1.EFsConns, v2.EFsConns) {
+ if !slices.Equal(v1.EFsConns, v2.EFsConns) {
d.Efs_conns = &v2.EFsConns
}
return d
@@ -1681,7 +1682,7 @@ func diffEEsJsonCfg(d *EEsJsonCfg, v1, v2 *EEsCfg, separator string) *EEsJsonCfg
if v1.Enabled != v2.Enabled {
d.Enabled = utils.BoolPointer(v2.Enabled)
}
- if !utils.SliceStringEqual(v1.AttributeSConns, v2.AttributeSConns) {
+ if !slices.Equal(v1.AttributeSConns, v2.AttributeSConns) {
d.Attributes_conns = utils.SliceStringPointer(getInternalJSONConns(v2.AttributeSConns))
}
d.Cache = diffCacheParamsJsonCfg(d.Cache, v2.Cache)
diff --git a/config/erscfg.go b/config/erscfg.go
index 327ef9c0d..bc59e7fc7 100644
--- a/config/erscfg.go
+++ b/config/erscfg.go
@@ -19,6 +19,7 @@ along with this program. If not, see
package config
import (
+ "slices"
"time"
"github.com/cgrates/birpc/context"
@@ -97,7 +98,7 @@ func (erS ERsCfg) Clone() (cln *ERsCfg) {
PartialCacheTTL: erS.PartialCacheTTL,
}
if erS.SessionSConns != nil {
- cln.SessionSConns = utils.CloneStringSlice(erS.SessionSConns)
+ cln.SessionSConns = slices.Clone(erS.SessionSConns)
}
for idx, rdr := range erS.Readers {
cln.Readers[idx] = rdr.Clone()
@@ -480,7 +481,7 @@ func (er *EventReaderCfg) loadFromJSONCfg(jsnCfg *EventReaderJsonCfg, msgTemplat
er.Timezone = *jsnCfg.Timezone
}
if jsnCfg.Filters != nil {
- er.Filters = utils.CloneStringSlice(*jsnCfg.Filters)
+ er.Filters = slices.Clone(*jsnCfg.Filters)
}
if jsnCfg.Flags != nil {
er.Flags = utils.FlagsWithParamsFromSlice(*jsnCfg.Flags)
@@ -821,7 +822,7 @@ func (er EventReaderCfg) Clone() (cln *EventReaderCfg) {
Opts: er.Opts.Clone(),
}
if er.Filters != nil {
- cln.Filters = utils.CloneStringSlice(er.Filters)
+ cln.Filters = slices.Clone(er.Filters)
}
if er.Fields != nil {
cln.Fields = make([]*FCTemplate, len(er.Fields))
@@ -1796,12 +1797,12 @@ func diffEventReaderJsonCfg(d *EventReaderJsonCfg, v1, v2 *EventReaderCfg, separ
if v1.Timezone != v2.Timezone {
d.Timezone = utils.StringPointer(v2.Timezone)
}
- if !utils.SliceStringEqual(v1.Filters, v2.Filters) {
+ if !slices.Equal(v1.Filters, v2.Filters) {
d.Filters = &v2.Filters
}
flgs1 := v1.Flags.SliceFlags()
flgs2 := v2.Flags.SliceFlags()
- if !utils.SliceStringEqual(flgs1, flgs2) {
+ if !slices.Equal(flgs1, flgs2) {
d.Flags = &flgs2
}
var flds []*FcTemplateJsonCfg
@@ -1886,7 +1887,7 @@ func diffERsJsonCfg(d *ERsJsonCfg, v1, v2 *ERsCfg, separator string) *ERsJsonCfg
if v1.Enabled != v2.Enabled {
d.Enabled = utils.BoolPointer(v2.Enabled)
}
- if !utils.SliceStringEqual(v1.SessionSConns, v2.SessionSConns) {
+ if !slices.Equal(v1.SessionSConns, v2.SessionSConns) {
d.Sessions_conns = utils.SliceStringPointer(getInternalJSONConns(v2.SessionSConns))
}
if v1.PartialCacheTTL != v2.PartialCacheTTL {
diff --git a/config/fctemplate.go b/config/fctemplate.go
index ffea2e328..dd4a5d8f4 100644
--- a/config/fctemplate.go
+++ b/config/fctemplate.go
@@ -20,6 +20,7 @@ package config
import (
"fmt"
+ "slices"
"time"
"github.com/cgrates/birpc/context"
@@ -42,7 +43,7 @@ func NewFCTemplateFromFCTemplateJSONCfg(jsnCfg *FcTemplateJsonCfg, separator str
fcTmp.Tag = *jsnCfg.Tag
}
if jsnCfg.Filters != nil {
- fcTmp.Filters = utils.CloneStringSlice(*jsnCfg.Filters)
+ fcTmp.Filters = slices.Clone(*jsnCfg.Filters)
}
if jsnCfg.Value != nil {
if fcTmp.Value, err = NewRSRParsers(*jsnCfg.Value, separator); err != nil {
@@ -183,10 +184,10 @@ func (fc FCTemplate) Clone() (cln *FCTemplate) {
cln.RoundingDecimals = utils.IntPointer(*fc.RoundingDecimals)
}
if fc.pathSlice != nil {
- cln.pathSlice = utils.CloneStringSlice(fc.pathSlice)
+ cln.pathSlice = slices.Clone(fc.pathSlice)
}
if fc.Filters != nil {
- cln.Filters = utils.CloneStringSlice(fc.Filters)
+ cln.Filters = slices.Clone(fc.Filters)
}
return
}
@@ -312,8 +313,8 @@ func (fc *FCTemplate) Equals(fc2 *FCTemplate) bool {
fc.Tag == fc2.Tag &&
fc.Type == fc2.Type &&
fc.Path == fc2.Path &&
- utils.SliceStringEqual(fc.Filters, fc2.Filters) &&
- utils.SliceStringEqual(fc.Value.AsStringSlice(), fc2.Value.AsStringSlice()) &&
+ slices.Equal(fc.Filters, fc2.Filters) &&
+ slices.Equal(fc.Value.AsStringSlice(), fc2.Value.AsStringSlice()) &&
fc.Width == fc2.Width &&
fc.Strip == fc2.Strip &&
fc.Padding == fc2.Padding &&
diff --git a/config/filterscfg.go b/config/filterscfg.go
index fdbefcdb6..6066d4987 100644
--- a/config/filterscfg.go
+++ b/config/filterscfg.go
@@ -19,6 +19,8 @@ along with this program. If not, see
package config
import (
+ "slices"
+
"github.com/cgrates/birpc/context"
"github.com/cgrates/cgrates/utils"
)
@@ -77,13 +79,13 @@ func (fSCfg FilterSCfg) CloneSection() Section { return fSCfg.Clone() }
func (fSCfg FilterSCfg) Clone() (cln *FilterSCfg) {
cln = new(FilterSCfg)
if fSCfg.StatSConns != nil {
- cln.StatSConns = utils.CloneStringSlice(fSCfg.StatSConns)
+ cln.StatSConns = slices.Clone(fSCfg.StatSConns)
}
if fSCfg.ResourceSConns != nil {
- cln.ResourceSConns = utils.CloneStringSlice(fSCfg.ResourceSConns)
+ cln.ResourceSConns = slices.Clone(fSCfg.ResourceSConns)
}
if fSCfg.AccountSConns != nil {
- cln.AccountSConns = utils.CloneStringSlice(fSCfg.AccountSConns)
+ cln.AccountSConns = slices.Clone(fSCfg.AccountSConns)
}
return
}
@@ -99,13 +101,13 @@ func diffFilterSJsonCfg(d *FilterSJsonCfg, v1, v2 *FilterSCfg) *FilterSJsonCfg {
if d == nil {
d = new(FilterSJsonCfg)
}
- if !utils.SliceStringEqual(v1.StatSConns, v2.StatSConns) {
+ if !slices.Equal(v1.StatSConns, v2.StatSConns) {
d.Stats_conns = utils.SliceStringPointer(getInternalJSONConns(v2.StatSConns))
}
- if !utils.SliceStringEqual(v1.ResourceSConns, v2.ResourceSConns) {
+ if !slices.Equal(v1.ResourceSConns, v2.ResourceSConns) {
d.Resources_conns = utils.SliceStringPointer(getInternalJSONConns(v2.ResourceSConns))
}
- if !utils.SliceStringEqual(v1.AccountSConns, v2.AccountSConns) {
+ if !slices.Equal(v1.AccountSConns, v2.AccountSConns) {
d.Accounts_conns = utils.SliceStringPointer(getInternalJSONConns(v2.AccountSConns))
}
return d
diff --git a/config/fsagentcfg.go b/config/fsagentcfg.go
index 2868663dc..06801bbaf 100644
--- a/config/fsagentcfg.go
+++ b/config/fsagentcfg.go
@@ -19,6 +19,7 @@ along with this program. If not, see
package config
import (
+ "slices"
"time"
"github.com/cgrates/birpc/context"
@@ -197,7 +198,7 @@ func (fscfg FsAgentCfg) Clone() (cln *FsAgentCfg) {
EmptyBalanceContext: fscfg.EmptyBalanceContext,
EmptyBalanceAnnFile: fscfg.EmptyBalanceAnnFile,
MaxWaitConnection: fscfg.MaxWaitConnection,
- SessionSConns: utils.CloneStringSlice(fscfg.SessionSConns),
+ SessionSConns: slices.Clone(fscfg.SessionSConns),
}
if fscfg.EventSocketConns != nil {
cln.EventSocketConns = make([]*FsConnCfg, len(fscfg.EventSocketConns))
@@ -274,7 +275,7 @@ func diffFreeswitchAgentJsonCfg(d *FreeswitchAgentJsonCfg, v1, v2 *FsAgentCfg) *
if v1.Enabled != v2.Enabled {
d.Enabled = utils.BoolPointer(v2.Enabled)
}
- if !utils.SliceStringEqual(v1.SessionSConns, v2.SessionSConns) {
+ if !slices.Equal(v1.SessionSConns, v2.SessionSConns) {
d.Sessions_conns = utils.SliceStringPointer(getBiRPCInternalJSONConns(v2.SessionSConns))
}
if v1.SubscribePark != v2.SubscribePark {
@@ -285,7 +286,7 @@ func diffFreeswitchAgentJsonCfg(d *FreeswitchAgentJsonCfg, v1, v2 *FsAgentCfg) *
}
extra1 := v1.ExtraFields.AsStringSlice()
extra2 := v2.ExtraFields.AsStringSlice()
- if !utils.SliceStringEqual(extra1, extra2) {
+ if !slices.Equal(extra1, extra2) {
d.Extra_fields = &extra2
}
if v1.LowBalanceAnnFile != v2.LowBalanceAnnFile {
diff --git a/config/httpagntcfg.go b/config/httpagntcfg.go
index df1e678f5..b9bf4017f 100644
--- a/config/httpagntcfg.go
+++ b/config/httpagntcfg.go
@@ -19,6 +19,8 @@ along with this program. If not, see
package config
import (
+ "slices"
+
"github.com/cgrates/birpc/context"
"github.com/cgrates/cgrates/utils"
"github.com/cgrates/rpcclient"
@@ -198,7 +200,7 @@ func diffHttpAgentJsonCfg(d *HttpAgentJsonCfg, v1, v2 *HTTPAgentCfg, separator s
if v1.ReplyPayload != v2.ReplyPayload {
d.Reply_payload = utils.StringPointer(v2.ReplyPayload)
}
- if !utils.SliceStringEqual(v1.SessionSConns, v2.SessionSConns) {
+ if !slices.Equal(v1.SessionSConns, v2.SessionSConns) {
d.Sessions_conns = utils.SliceStringPointer(getBiRPCInternalJSONConns(v2.SessionSConns))
}
@@ -213,7 +215,7 @@ func equalsHTTPAgentCfgs(v1, v2 HTTPAgentCfgs) bool {
for i := range v2 {
if v1[i].ID != v2[i].ID ||
v1[i].URL != v2[i].URL ||
- !utils.SliceStringEqual(v1[i].SessionSConns, v2[i].SessionSConns) ||
+ !slices.Equal(v1[i].SessionSConns, v2[i].SessionSConns) ||
v1[i].RequestPayload != v2[i].RequestPayload ||
v1[i].ReplyPayload != v2[i].ReplyPayload ||
!equalsRequestProcessors(v1[i].RequestProcessors, v2[i].RequestProcessors) {
diff --git a/config/kamagentcfg.go b/config/kamagentcfg.go
index fbc0dfc64..9fe78789f 100644
--- a/config/kamagentcfg.go
+++ b/config/kamagentcfg.go
@@ -19,6 +19,7 @@ along with this program. If not, see
package config
import (
+ "slices"
"time"
"github.com/cgrates/birpc/context"
@@ -149,7 +150,7 @@ func (ka KamAgentCfg) Clone() (cln *KamAgentCfg) {
Timezone: ka.Timezone,
}
if ka.SessionSConns != nil {
- cln.SessionSConns = utils.CloneStringSlice(ka.SessionSConns)
+ cln.SessionSConns = slices.Clone(ka.SessionSConns)
}
if ka.EvapiConns != nil {
cln.EvapiConns = make([]*KamConnCfg, len(ka.EvapiConns))
@@ -216,7 +217,7 @@ func diffKamAgentJsonCfg(d *KamAgentJsonCfg, v1, v2 *KamAgentCfg) *KamAgentJsonC
if v1.Enabled != v2.Enabled {
d.Enabled = utils.BoolPointer(v2.Enabled)
}
- if !utils.SliceStringEqual(v1.SessionSConns, v2.SessionSConns) {
+ if !slices.Equal(v1.SessionSConns, v2.SessionSConns) {
d.Sessions_conns = utils.SliceStringPointer(getBiRPCInternalJSONConns(v2.SessionSConns))
}
if v1.CreateCdr != v2.CreateCdr {
diff --git a/config/loadercgrcfg.go b/config/loadercgrcfg.go
index 79ecfbd7d..a3120ce9d 100644
--- a/config/loadercgrcfg.go
+++ b/config/loadercgrcfg.go
@@ -20,6 +20,7 @@ package config
import (
"encoding/json"
+ "slices"
"github.com/cgrates/birpc/context"
"github.com/cgrates/cgrates/utils"
@@ -116,10 +117,10 @@ func (ld LoaderCgrCfg) Clone() (cln *LoaderCgrCfg) {
}
if ld.CachesConns != nil {
- cln.CachesConns = utils.CloneStringSlice(ld.CachesConns)
+ cln.CachesConns = slices.Clone(ld.CachesConns)
}
if ld.ActionSConns != nil {
- cln.ActionSConns = utils.CloneStringSlice(ld.ActionSConns)
+ cln.ActionSConns = slices.Clone(ld.ActionSConns)
}
return
}
@@ -151,10 +152,10 @@ func diffLoaderCfgJson(d *LoaderCfgJson, v1, v2 *LoaderCgrCfg) *LoaderCfgJson {
if v1.FieldSeparator != v2.FieldSeparator {
d.Field_separator = utils.StringPointer(string(v2.FieldSeparator))
}
- if !utils.SliceStringEqual(v1.CachesConns, v2.CachesConns) {
+ if !slices.Equal(v1.CachesConns, v2.CachesConns) {
d.Caches_conns = utils.SliceStringPointer(getInternalJSONConns(v2.CachesConns))
}
- if !utils.SliceStringEqual(v1.ActionSConns, v2.ActionSConns) {
+ if !slices.Equal(v1.ActionSConns, v2.ActionSConns) {
d.Actions_conns = utils.SliceStringPointer(getInternalJSONConns(v2.ActionSConns))
}
gc1 := string(v1.GapiCredentials)
diff --git a/config/loaderscfg.go b/config/loaderscfg.go
index fee073188..30b895fab 100644
--- a/config/loaderscfg.go
+++ b/config/loaderscfg.go
@@ -22,6 +22,7 @@ import (
"os"
"path"
"path/filepath"
+ "slices"
"time"
"github.com/cgrates/birpc/context"
@@ -283,7 +284,7 @@ func (l LoaderSCfg) Clone() (cln *LoaderSCfg) {
Tenant: l.Tenant,
RunDelay: l.RunDelay,
LockFilePath: l.LockFilePath,
- CacheSConns: utils.CloneStringSlice(l.CacheSConns),
+ CacheSConns: slices.Clone(l.CacheSConns),
FieldSeparator: l.FieldSeparator,
TpInDir: l.TpInDir,
TpOutDir: l.TpOutDir,
@@ -399,7 +400,7 @@ func equalsLoaderDatasType(v1, v2 []*LoaderDataType) bool {
if v1[i].ID != v2[i].ID ||
v1[i].Type != v2[i].Type ||
v1[i].Filename != v2[i].Filename ||
- !utils.SliceStringEqual(v1[i].Flags.SliceFlags(), v2[i].Flags.SliceFlags()) ||
+ !slices.Equal(v1[i].Flags.SliceFlags(), v2[i].Flags.SliceFlags()) ||
!fcTemplatesEqual(v1[i].Fields, v2[i].Fields) {
return false
}
@@ -440,7 +441,7 @@ func diffLoaderJsonCfg(v1, v2 *LoaderSCfg, separator string) (d *LoaderJsonCfg)
if v1.LockFilePath != v2.LockFilePath {
d.Lockfile_path = utils.StringPointer(v2.LockFilePath)
}
- if !utils.SliceStringEqual(v1.CacheSConns, v2.CacheSConns) {
+ if !slices.Equal(v1.CacheSConns, v2.CacheSConns) {
d.Caches_conns = utils.SliceStringPointer(getInternalJSONConns(v2.CacheSConns))
}
if v1.FieldSeparator != v2.FieldSeparator {
@@ -485,7 +486,7 @@ func equalsLoadersJsonCfg(v1, v2 LoaderSCfgs) bool {
v1[i].Tenant != v2[i].Tenant ||
v1[i].RunDelay != v2[i].RunDelay ||
v1[i].LockFilePath != v2[i].LockFilePath ||
- !utils.SliceStringEqual(v1[i].CacheSConns, v2[i].CacheSConns) ||
+ !slices.Equal(v1[i].CacheSConns, v2[i].CacheSConns) ||
v1[i].FieldSeparator != v2[i].FieldSeparator ||
v1[i].TpInDir != v2[i].TpInDir ||
v1[i].TpOutDir != v2[i].TpOutDir ||
diff --git a/config/loggercfg.go b/config/loggercfg.go
index 2b202eb3c..98d83baca 100644
--- a/config/loggercfg.go
+++ b/config/loggercfg.go
@@ -19,6 +19,8 @@ along with this program. If not, see
package config
import (
+ "slices"
+
"github.com/cgrates/birpc/context"
"github.com/cgrates/cgrates/utils"
)
@@ -161,7 +163,7 @@ func diffLoggerJsonCfg(d *LoggerJsonCfg, v1, v2 *LoggerCfg) *LoggerJsonCfg {
if v1.Level != v2.Level {
d.Level = utils.IntPointer(v2.Level)
}
- if !utils.SliceStringEqual(v1.EFsConns, v2.EFsConns) {
+ if !slices.Equal(v1.EFsConns, v2.EFsConns) {
d.Efs_conns = utils.SliceStringPointer(getInternalJSONConns(v2.EFsConns))
}
d.Opts = diffLoggerOptsJsonCfg(d.Opts, v1.Opts, v2.Opts)
diff --git a/config/migratorcfg.go b/config/migratorcfg.go
index bddcf0709..3ea378554 100644
--- a/config/migratorcfg.go
+++ b/config/migratorcfg.go
@@ -20,6 +20,7 @@ package config
import (
"fmt"
+ "slices"
"strings"
"github.com/cgrates/birpc/context"
@@ -79,7 +80,7 @@ func (mg *MigratorCgrCfg) loadFromJSONCfg(jsnCfg *MigratorCfgJson) (err error) {
mg.OutDataDBEncoding = strings.TrimPrefix(*jsnCfg.Out_dataDB_encoding, "*")
}
if jsnCfg.Users_filters != nil && len(*jsnCfg.Users_filters) != 0 {
- mg.UsersFilters = utils.CloneStringSlice(*jsnCfg.Users_filters)
+ mg.UsersFilters = slices.Clone(*jsnCfg.Users_filters)
}
if jsnCfg.Out_dataDB_opts != nil {
err = mg.OutDataDBOpts.loadFromJSONCfg(jsnCfg.Out_dataDB_opts)
@@ -114,7 +115,7 @@ func (mg MigratorCgrCfg) AsMapInterface(string) any {
utils.OutDataDBPasswordCfg: mg.OutDataDBPassword,
utils.OutDataDBEncodingCfg: mg.OutDataDBEncoding,
utils.OutDataDBOptsCfg: outDataDBOpts,
- utils.UsersFiltersCfg: utils.CloneStringSlice(mg.UsersFilters),
+ utils.UsersFiltersCfg: slices.Clone(mg.UsersFilters),
}
}
@@ -135,7 +136,7 @@ func (mg MigratorCgrCfg) Clone() (cln *MigratorCgrCfg) {
OutDataDBOpts: mg.OutDataDBOpts.Clone(),
}
if mg.UsersFilters != nil {
- cln.UsersFilters = utils.CloneStringSlice(mg.UsersFilters)
+ cln.UsersFilters = slices.Clone(mg.UsersFilters)
}
return
}
@@ -178,8 +179,8 @@ func diffMigratorCfgJson(d *MigratorCfgJson, v1, v2 *MigratorCgrCfg) *MigratorCf
d.Out_dataDB_encoding = utils.StringPointer(v2.OutDataDBEncoding)
}
- if !utils.SliceStringEqual(v1.UsersFilters, v2.UsersFilters) {
- d.Users_filters = utils.SliceStringPointer(utils.CloneStringSlice(v2.UsersFilters))
+ if !slices.Equal(v1.UsersFilters, v2.UsersFilters) {
+ d.Users_filters = utils.SliceStringPointer(slices.Clone(v2.UsersFilters))
}
d.Out_dataDB_opts = diffDataDBOptsJsonCfg(d.Out_dataDB_opts, v1.OutDataDBOpts, v2.OutDataDBOpts)
return d
diff --git a/config/radiuscfg.go b/config/radiuscfg.go
index 334b45fed..8172f888f 100644
--- a/config/radiuscfg.go
+++ b/config/radiuscfg.go
@@ -19,6 +19,8 @@ along with this program. If not, see
package config
import (
+ "slices"
+
"github.com/cgrates/birpc/context"
"github.com/cgrates/cgrates/utils"
)
@@ -122,7 +124,7 @@ func (ra RadiusAgentCfg) Clone() (cln *RadiusAgentCfg) {
ClientDictionaries: make(map[string]string),
}
if ra.SessionSConns != nil {
- cln.SessionSConns = utils.CloneStringSlice(ra.SessionSConns)
+ cln.SessionSConns = slices.Clone(ra.SessionSConns)
}
for k, v := range ra.ClientSecrets {
cln.ClientSecrets[k] = v
@@ -169,7 +171,7 @@ func diffRadiusAgentJsonCfg(d *RadiusAgentJsonCfg, v1, v2 *RadiusAgentCfg, separ
}
d.Client_secrets = diffMapString(d.Client_secrets, v1.ClientSecrets, v2.ClientSecrets)
d.Client_dictionaries = diffMapString(d.Client_dictionaries, v1.ClientDictionaries, v2.ClientDictionaries)
- if !utils.SliceStringEqual(v1.SessionSConns, v2.SessionSConns) {
+ if !slices.Equal(v1.SessionSConns, v2.SessionSConns) {
d.Sessions_conns = utils.SliceStringPointer(getBiRPCInternalJSONConns(v2.SessionSConns))
}
d.Request_processors = diffReqProcessorsJsnCfg(d.Request_processors, v1.RequestProcessors, v2.RequestProcessors, separator)
diff --git a/config/ratescfg.go b/config/ratescfg.go
index dbd8ee3e7..6651c21ee 100644
--- a/config/ratescfg.go
+++ b/config/ratescfg.go
@@ -19,6 +19,7 @@ along with this program. If not, see
package config
import (
+ "slices"
"time"
"github.com/cgrates/birpc/context"
@@ -116,19 +117,19 @@ func (rCfg *RateSCfg) loadFromJSONCfg(jsnCfg *RateSJsonCfg) (err error) {
rCfg.IndexedSelects = *jsnCfg.Indexed_selects
}
if jsnCfg.String_indexed_fields != nil {
- rCfg.StringIndexedFields = utils.SliceStringPointer(utils.CloneStringSlice(*jsnCfg.String_indexed_fields))
+ rCfg.StringIndexedFields = utils.SliceStringPointer(slices.Clone(*jsnCfg.String_indexed_fields))
}
if jsnCfg.Prefix_indexed_fields != nil {
- rCfg.PrefixIndexedFields = utils.SliceStringPointer(utils.CloneStringSlice(*jsnCfg.Prefix_indexed_fields))
+ rCfg.PrefixIndexedFields = utils.SliceStringPointer(slices.Clone(*jsnCfg.Prefix_indexed_fields))
}
if jsnCfg.Suffix_indexed_fields != nil {
- rCfg.SuffixIndexedFields = utils.SliceStringPointer(utils.CloneStringSlice(*jsnCfg.Suffix_indexed_fields))
+ rCfg.SuffixIndexedFields = utils.SliceStringPointer(slices.Clone(*jsnCfg.Suffix_indexed_fields))
}
if jsnCfg.Exists_indexed_fields != nil {
- rCfg.ExistsIndexedFields = utils.SliceStringPointer(utils.CloneStringSlice(*jsnCfg.Exists_indexed_fields))
+ rCfg.ExistsIndexedFields = utils.SliceStringPointer(slices.Clone(*jsnCfg.Exists_indexed_fields))
}
if jsnCfg.Notexists_indexed_fields != nil {
- rCfg.NotExistsIndexedFields = utils.SliceStringPointer(utils.CloneStringSlice(*jsnCfg.Notexists_indexed_fields))
+ rCfg.NotExistsIndexedFields = utils.SliceStringPointer(slices.Clone(*jsnCfg.Notexists_indexed_fields))
}
if jsnCfg.Nested_fields != nil {
rCfg.NestedFields = *jsnCfg.Nested_fields
@@ -138,19 +139,19 @@ func (rCfg *RateSCfg) loadFromJSONCfg(jsnCfg *RateSJsonCfg) (err error) {
rCfg.RateIndexedSelects = *jsnCfg.Rate_indexed_selects
}
if jsnCfg.Rate_string_indexed_fields != nil {
- rCfg.RateStringIndexedFields = utils.SliceStringPointer(utils.CloneStringSlice(*jsnCfg.Rate_string_indexed_fields))
+ rCfg.RateStringIndexedFields = utils.SliceStringPointer(slices.Clone(*jsnCfg.Rate_string_indexed_fields))
}
if jsnCfg.Rate_prefix_indexed_fields != nil {
- rCfg.RatePrefixIndexedFields = utils.SliceStringPointer(utils.CloneStringSlice(*jsnCfg.Rate_prefix_indexed_fields))
+ rCfg.RatePrefixIndexedFields = utils.SliceStringPointer(slices.Clone(*jsnCfg.Rate_prefix_indexed_fields))
}
if jsnCfg.Rate_suffix_indexed_fields != nil {
- rCfg.RateSuffixIndexedFields = utils.SliceStringPointer(utils.CloneStringSlice(*jsnCfg.Rate_suffix_indexed_fields))
+ rCfg.RateSuffixIndexedFields = utils.SliceStringPointer(slices.Clone(*jsnCfg.Rate_suffix_indexed_fields))
}
if jsnCfg.Rate_exists_indexed_fields != nil {
- rCfg.RateExistsIndexedFields = utils.SliceStringPointer(utils.CloneStringSlice(*jsnCfg.Rate_exists_indexed_fields))
+ rCfg.RateExistsIndexedFields = utils.SliceStringPointer(slices.Clone(*jsnCfg.Rate_exists_indexed_fields))
}
if jsnCfg.Rate_notexists_indexed_fields != nil {
- rCfg.RateNotExistsIndexedFields = utils.SliceStringPointer(utils.CloneStringSlice(*jsnCfg.Rate_notexists_indexed_fields))
+ rCfg.RateNotExistsIndexedFields = utils.SliceStringPointer(slices.Clone(*jsnCfg.Rate_notexists_indexed_fields))
}
if jsnCfg.Rate_nested_fields != nil {
rCfg.RateNestedFields = *jsnCfg.Rate_nested_fields
@@ -183,34 +184,34 @@ func (rCfg RateSCfg) AsMapInterface(string) any {
utils.OptsCfg: opts,
}
if rCfg.StringIndexedFields != nil {
- mp[utils.StringIndexedFieldsCfg] = utils.CloneStringSlice(*rCfg.StringIndexedFields)
+ mp[utils.StringIndexedFieldsCfg] = slices.Clone(*rCfg.StringIndexedFields)
}
if rCfg.PrefixIndexedFields != nil {
- mp[utils.PrefixIndexedFieldsCfg] = utils.CloneStringSlice(*rCfg.PrefixIndexedFields)
+ mp[utils.PrefixIndexedFieldsCfg] = slices.Clone(*rCfg.PrefixIndexedFields)
}
if rCfg.SuffixIndexedFields != nil {
- mp[utils.SuffixIndexedFieldsCfg] = utils.CloneStringSlice(*rCfg.SuffixIndexedFields)
+ mp[utils.SuffixIndexedFieldsCfg] = slices.Clone(*rCfg.SuffixIndexedFields)
}
if rCfg.ExistsIndexedFields != nil {
- mp[utils.ExistsIndexedFieldsCfg] = utils.CloneStringSlice(*rCfg.ExistsIndexedFields)
+ mp[utils.ExistsIndexedFieldsCfg] = slices.Clone(*rCfg.ExistsIndexedFields)
}
if rCfg.NotExistsIndexedFields != nil {
- mp[utils.NotExistsIndexedFieldsCfg] = utils.CloneStringSlice(*rCfg.NotExistsIndexedFields)
+ mp[utils.NotExistsIndexedFieldsCfg] = slices.Clone(*rCfg.NotExistsIndexedFields)
}
if rCfg.RateStringIndexedFields != nil {
- mp[utils.RateStringIndexedFieldsCfg] = utils.CloneStringSlice(*rCfg.RateStringIndexedFields)
+ mp[utils.RateStringIndexedFieldsCfg] = slices.Clone(*rCfg.RateStringIndexedFields)
}
if rCfg.RatePrefixIndexedFields != nil {
- mp[utils.RatePrefixIndexedFieldsCfg] = utils.CloneStringSlice(*rCfg.RatePrefixIndexedFields)
+ mp[utils.RatePrefixIndexedFieldsCfg] = slices.Clone(*rCfg.RatePrefixIndexedFields)
}
if rCfg.RateSuffixIndexedFields != nil {
- mp[utils.RateSuffixIndexedFieldsCfg] = utils.CloneStringSlice(*rCfg.RateSuffixIndexedFields)
+ mp[utils.RateSuffixIndexedFieldsCfg] = slices.Clone(*rCfg.RateSuffixIndexedFields)
}
if rCfg.RateExistsIndexedFields != nil {
- mp[utils.RateExistsIndexedFieldsCfg] = utils.CloneStringSlice(*rCfg.RateExistsIndexedFields)
+ mp[utils.RateExistsIndexedFieldsCfg] = slices.Clone(*rCfg.RateExistsIndexedFields)
}
if rCfg.RateNotExistsIndexedFields != nil {
- mp[utils.RateNotExistsIndexedFieldsCfg] = utils.CloneStringSlice(*rCfg.RateNotExistsIndexedFields)
+ mp[utils.RateNotExistsIndexedFieldsCfg] = slices.Clone(*rCfg.RateNotExistsIndexedFields)
}
return mp
}
@@ -260,34 +261,34 @@ func (rCfg RateSCfg) Clone() (cln *RateSCfg) {
Opts: rCfg.Opts.Clone(),
}
if rCfg.StringIndexedFields != nil {
- cln.StringIndexedFields = utils.SliceStringPointer(utils.CloneStringSlice(*rCfg.StringIndexedFields))
+ cln.StringIndexedFields = utils.SliceStringPointer(slices.Clone(*rCfg.StringIndexedFields))
}
if rCfg.PrefixIndexedFields != nil {
- cln.PrefixIndexedFields = utils.SliceStringPointer(utils.CloneStringSlice(*rCfg.PrefixIndexedFields))
+ cln.PrefixIndexedFields = utils.SliceStringPointer(slices.Clone(*rCfg.PrefixIndexedFields))
}
if rCfg.SuffixIndexedFields != nil {
- cln.SuffixIndexedFields = utils.SliceStringPointer(utils.CloneStringSlice(*rCfg.SuffixIndexedFields))
+ cln.SuffixIndexedFields = utils.SliceStringPointer(slices.Clone(*rCfg.SuffixIndexedFields))
}
if rCfg.ExistsIndexedFields != nil {
- cln.ExistsIndexedFields = utils.SliceStringPointer(utils.CloneStringSlice(*rCfg.ExistsIndexedFields))
+ cln.ExistsIndexedFields = utils.SliceStringPointer(slices.Clone(*rCfg.ExistsIndexedFields))
}
if rCfg.NotExistsIndexedFields != nil {
- cln.NotExistsIndexedFields = utils.SliceStringPointer(utils.CloneStringSlice(*rCfg.NotExistsIndexedFields))
+ cln.NotExistsIndexedFields = utils.SliceStringPointer(slices.Clone(*rCfg.NotExistsIndexedFields))
}
if rCfg.RateStringIndexedFields != nil {
- cln.RateStringIndexedFields = utils.SliceStringPointer(utils.CloneStringSlice(*rCfg.RateStringIndexedFields))
+ cln.RateStringIndexedFields = utils.SliceStringPointer(slices.Clone(*rCfg.RateStringIndexedFields))
}
if rCfg.RatePrefixIndexedFields != nil {
- cln.RatePrefixIndexedFields = utils.SliceStringPointer(utils.CloneStringSlice(*rCfg.RatePrefixIndexedFields))
+ cln.RatePrefixIndexedFields = utils.SliceStringPointer(slices.Clone(*rCfg.RatePrefixIndexedFields))
}
if rCfg.RateSuffixIndexedFields != nil {
- cln.RateSuffixIndexedFields = utils.SliceStringPointer(utils.CloneStringSlice(*rCfg.RateSuffixIndexedFields))
+ cln.RateSuffixIndexedFields = utils.SliceStringPointer(slices.Clone(*rCfg.RateSuffixIndexedFields))
}
if rCfg.RateExistsIndexedFields != nil {
- cln.RateExistsIndexedFields = utils.SliceStringPointer(utils.CloneStringSlice(*rCfg.RateExistsIndexedFields))
+ cln.RateExistsIndexedFields = utils.SliceStringPointer(slices.Clone(*rCfg.RateExistsIndexedFields))
}
if rCfg.RateNotExistsIndexedFields != nil {
- cln.RateNotExistsIndexedFields = utils.SliceStringPointer(utils.CloneStringSlice(*rCfg.RateNotExistsIndexedFields))
+ cln.RateNotExistsIndexedFields = utils.SliceStringPointer(slices.Clone(*rCfg.RateNotExistsIndexedFields))
}
return
}
diff --git a/config/registrarccfg.go b/config/registrarccfg.go
index 021aa3c36..e48f762e6 100644
--- a/config/registrarccfg.go
+++ b/config/registrarccfg.go
@@ -19,6 +19,7 @@ along with this program. If not, see
package config
import (
+ "slices"
"time"
"github.com/cgrates/birpc/context"
@@ -86,7 +87,7 @@ func (dps *RegistrarCCfg) loadFromJSONCfg(jsnCfg *RegistrarCJsonCfg) (err error)
return nil
}
if jsnCfg.Registrars_conns != nil {
- dps.RegistrarSConns = utils.CloneStringSlice(*jsnCfg.Registrars_conns)
+ dps.RegistrarSConns = slices.Clone(*jsnCfg.Registrars_conns)
}
if jsnCfg.Hosts != nil {
for _, hostJSON := range jsnCfg.Hosts {
@@ -110,7 +111,7 @@ func (dps *RegistrarCCfg) loadFromJSONCfg(jsnCfg *RegistrarCJsonCfg) (err error)
// AsMapInterface returns the config as a map[string]any
func (dps *RegistrarCCfg) AsMapInterface() (initialMP map[string]any) {
initialMP = map[string]any{
- utils.RegistrarsConnsCfg: utils.CloneStringSlice(dps.RegistrarSConns),
+ utils.RegistrarsConnsCfg: slices.Clone(dps.RegistrarSConns),
utils.RefreshIntervalCfg: dps.RefreshInterval.String(),
}
if dps.RefreshInterval == 0 {
@@ -138,7 +139,7 @@ func (dps RegistrarCCfg) Clone() (cln *RegistrarCCfg) {
Hosts: make(map[string][]*RemoteHost),
}
if dps.RegistrarSConns != nil {
- cln.RegistrarSConns = utils.CloneStringSlice(dps.RegistrarSConns)
+ cln.RegistrarSConns = slices.Clone(dps.RegistrarSConns)
}
for tnt, hosts := range dps.Hosts {
clnH := make([]*RemoteHost, len(hosts))
@@ -160,8 +161,8 @@ func diffRegistrarCJsonCfg(d *RegistrarCJsonCfg, v1, v2 *RegistrarCCfg) *Registr
if d == nil {
d = new(RegistrarCJsonCfg)
}
- if !utils.SliceStringEqual(v1.RegistrarSConns, v2.RegistrarSConns) {
- d.Registrars_conns = utils.SliceStringPointer(utils.CloneStringSlice(v2.RegistrarSConns))
+ if !slices.Equal(v1.RegistrarSConns, v2.RegistrarSConns) {
+ d.Registrars_conns = utils.SliceStringPointer(slices.Clone(v2.RegistrarSConns))
}
if d.Hosts == nil {
d.Hosts = []*RemoteHostJsonWithTenant{}
diff --git a/config/reqprocessorcfg.go b/config/reqprocessorcfg.go
index 0114a5243..9ef75b7ac 100644
--- a/config/reqprocessorcfg.go
+++ b/config/reqprocessorcfg.go
@@ -18,7 +18,11 @@ along with this program. If not, see
package config
-import "github.com/cgrates/cgrates/utils"
+import (
+ "slices"
+
+ "github.com/cgrates/cgrates/utils"
+)
// RequestProcessor is the request processor configuration
type RequestProcessor struct {
@@ -39,7 +43,7 @@ func (rp *RequestProcessor) loadFromJSONCfg(jsnCfg *ReqProcessorJsnCfg, sep stri
rp.ID = *jsnCfg.ID
}
if jsnCfg.Filters != nil {
- rp.Filters = utils.CloneStringSlice(*jsnCfg.Filters)
+ rp.Filters = slices.Clone(*jsnCfg.Filters)
}
if jsnCfg.Flags != nil {
rp.Flags = utils.FlagsWithParamsFromSlice(*jsnCfg.Flags)
@@ -69,7 +73,7 @@ func (rp *RequestProcessor) loadFromJSONCfg(jsnCfg *ReqProcessorJsnCfg, sep stri
func (rp *RequestProcessor) AsMapInterface(separator string) (initialMP map[string]any) {
initialMP = map[string]any{
utils.IDCfg: rp.ID,
- utils.FiltersCfg: utils.CloneStringSlice(rp.Filters),
+ utils.FiltersCfg: slices.Clone(rp.Filters),
utils.FlagsCfg: rp.Flags.SliceFlags(),
utils.TimezoneCfg: rp.Timezone,
}
@@ -102,7 +106,7 @@ func (rp RequestProcessor) Clone() (cln *RequestProcessor) {
Timezone: rp.Timezone,
}
if rp.Filters != nil {
- cln.Filters = utils.CloneStringSlice(rp.Filters)
+ cln.Filters = slices.Clone(rp.Filters)
}
if rp.RequestFields != nil {
cln.RequestFields = make([]*FCTemplate, len(rp.RequestFields))
@@ -141,12 +145,12 @@ func diffReqProcessorJsnCfg(d *ReqProcessorJsnCfg, v1, v2 *RequestProcessor, sep
if tnt1 != tnt2 {
d.Tenant = utils.StringPointer(tnt2)
}
- if !utils.SliceStringEqual(v1.Filters, v2.Filters) {
- d.Filters = utils.SliceStringPointer(utils.CloneStringSlice(v2.Filters))
+ if !slices.Equal(v1.Filters, v2.Filters) {
+ d.Filters = utils.SliceStringPointer(slices.Clone(v2.Filters))
}
flag1 := v1.Flags.SliceFlags()
flag2 := v2.Flags.SliceFlags()
- if !utils.SliceStringEqual(flag1, flag2) {
+ if !slices.Equal(flag1, flag2) {
d.Flags = utils.SliceStringPointer(flag2)
}
if v1.Timezone != v2.Timezone {
@@ -236,9 +240,9 @@ func equalsRequestProcessors(v1, v2 []*RequestProcessor) bool {
}
for i := range v2 {
if v1[i].ID != v2[i].ID ||
- !utils.SliceStringEqual(v1[i].Tenant.AsStringSlice(), v2[i].Tenant.AsStringSlice()) ||
- !utils.SliceStringEqual(v1[i].Filters, v2[i].Filters) ||
- !utils.SliceStringEqual(v1[i].Flags.SliceFlags(), v2[i].Flags.SliceFlags()) ||
+ !slices.Equal(v1[i].Tenant.AsStringSlice(), v2[i].Tenant.AsStringSlice()) ||
+ !slices.Equal(v1[i].Filters, v2[i].Filters) ||
+ !slices.Equal(v1[i].Flags.SliceFlags(), v2[i].Flags.SliceFlags()) ||
v1[i].Timezone != v2[i].Timezone ||
!fcTemplatesEqual(v1[i].RequestFields, v2[i].RequestFields) ||
!fcTemplatesEqual(v1[i].ReplyFields, v2[i].ReplyFields) {
diff --git a/config/resourcescfg.go b/config/resourcescfg.go
index 27d8c247e..0dcaff086 100644
--- a/config/resourcescfg.go
+++ b/config/resourcescfg.go
@@ -19,6 +19,7 @@ along with this program. If not, see
package config
import (
+ "slices"
"time"
"github.com/cgrates/birpc/context"
@@ -100,19 +101,19 @@ func (rlcfg *ResourceSConfig) loadFromJSONCfg(jsnCfg *ResourceSJsonCfg) (err err
}
}
if jsnCfg.String_indexed_fields != nil {
- rlcfg.StringIndexedFields = utils.SliceStringPointer(utils.CloneStringSlice(*jsnCfg.String_indexed_fields))
+ rlcfg.StringIndexedFields = utils.SliceStringPointer(slices.Clone(*jsnCfg.String_indexed_fields))
}
if jsnCfg.Prefix_indexed_fields != nil {
- rlcfg.PrefixIndexedFields = utils.SliceStringPointer(utils.CloneStringSlice(*jsnCfg.Prefix_indexed_fields))
+ rlcfg.PrefixIndexedFields = utils.SliceStringPointer(slices.Clone(*jsnCfg.Prefix_indexed_fields))
}
if jsnCfg.Suffix_indexed_fields != nil {
- rlcfg.SuffixIndexedFields = utils.SliceStringPointer(utils.CloneStringSlice(*jsnCfg.Suffix_indexed_fields))
+ rlcfg.SuffixIndexedFields = utils.SliceStringPointer(slices.Clone(*jsnCfg.Suffix_indexed_fields))
}
if jsnCfg.Exists_indexed_fields != nil {
- rlcfg.ExistsIndexedFields = utils.SliceStringPointer(utils.CloneStringSlice(*jsnCfg.Exists_indexed_fields))
+ rlcfg.ExistsIndexedFields = utils.SliceStringPointer(slices.Clone(*jsnCfg.Exists_indexed_fields))
}
if jsnCfg.Notexists_indexed_fields != nil {
- rlcfg.NotExistsIndexedFields = utils.SliceStringPointer(utils.CloneStringSlice(*jsnCfg.Notexists_indexed_fields))
+ rlcfg.NotExistsIndexedFields = utils.SliceStringPointer(slices.Clone(*jsnCfg.Notexists_indexed_fields))
}
if jsnCfg.Nested_fields != nil {
rlcfg.NestedFields = *jsnCfg.Nested_fields
@@ -141,19 +142,19 @@ func (rlcfg ResourceSConfig) AsMapInterface(string) any {
mp[utils.ThresholdSConnsCfg] = getInternalJSONConns(rlcfg.ThresholdSConns)
}
if rlcfg.StringIndexedFields != nil {
- mp[utils.StringIndexedFieldsCfg] = utils.CloneStringSlice(*rlcfg.StringIndexedFields)
+ mp[utils.StringIndexedFieldsCfg] = slices.Clone(*rlcfg.StringIndexedFields)
}
if rlcfg.PrefixIndexedFields != nil {
- mp[utils.PrefixIndexedFieldsCfg] = utils.CloneStringSlice(*rlcfg.PrefixIndexedFields)
+ mp[utils.PrefixIndexedFieldsCfg] = slices.Clone(*rlcfg.PrefixIndexedFields)
}
if rlcfg.SuffixIndexedFields != nil {
- mp[utils.SuffixIndexedFieldsCfg] = utils.CloneStringSlice(*rlcfg.SuffixIndexedFields)
+ mp[utils.SuffixIndexedFieldsCfg] = slices.Clone(*rlcfg.SuffixIndexedFields)
}
if rlcfg.ExistsIndexedFields != nil {
- mp[utils.ExistsIndexedFieldsCfg] = utils.CloneStringSlice(*rlcfg.ExistsIndexedFields)
+ mp[utils.ExistsIndexedFieldsCfg] = slices.Clone(*rlcfg.ExistsIndexedFields)
}
if rlcfg.NotExistsIndexedFields != nil {
- mp[utils.NotExistsIndexedFieldsCfg] = utils.CloneStringSlice(*rlcfg.NotExistsIndexedFields)
+ mp[utils.NotExistsIndexedFieldsCfg] = slices.Clone(*rlcfg.NotExistsIndexedFields)
}
if rlcfg.StoreInterval != 0 {
mp[utils.StoreIntervalCfg] = rlcfg.StoreInterval.String()
@@ -195,23 +196,23 @@ func (rlcfg ResourceSConfig) Clone() (cln *ResourceSConfig) {
Opts: rlcfg.Opts.Clone(),
}
if rlcfg.ThresholdSConns != nil {
- cln.ThresholdSConns = utils.CloneStringSlice(rlcfg.ThresholdSConns)
+ cln.ThresholdSConns = slices.Clone(rlcfg.ThresholdSConns)
}
if rlcfg.StringIndexedFields != nil {
- cln.StringIndexedFields = utils.SliceStringPointer(utils.CloneStringSlice(*rlcfg.StringIndexedFields))
+ cln.StringIndexedFields = utils.SliceStringPointer(slices.Clone(*rlcfg.StringIndexedFields))
}
if rlcfg.PrefixIndexedFields != nil {
- cln.PrefixIndexedFields = utils.SliceStringPointer(utils.CloneStringSlice(*rlcfg.PrefixIndexedFields))
+ cln.PrefixIndexedFields = utils.SliceStringPointer(slices.Clone(*rlcfg.PrefixIndexedFields))
}
if rlcfg.SuffixIndexedFields != nil {
- cln.SuffixIndexedFields = utils.SliceStringPointer(utils.CloneStringSlice(*rlcfg.SuffixIndexedFields))
+ cln.SuffixIndexedFields = utils.SliceStringPointer(slices.Clone(*rlcfg.SuffixIndexedFields))
}
if rlcfg.ExistsIndexedFields != nil {
- cln.ExistsIndexedFields = utils.SliceStringPointer(utils.CloneStringSlice(*rlcfg.ExistsIndexedFields))
+ cln.ExistsIndexedFields = utils.SliceStringPointer(slices.Clone(*rlcfg.ExistsIndexedFields))
}
if rlcfg.NotExistsIndexedFields != nil {
- cln.NotExistsIndexedFields = utils.SliceStringPointer(utils.CloneStringSlice(*rlcfg.NotExistsIndexedFields))
+ cln.NotExistsIndexedFields = utils.SliceStringPointer(slices.Clone(*rlcfg.NotExistsIndexedFields))
}
return
}
@@ -263,7 +264,7 @@ func diffResourceSJsonCfg(d *ResourceSJsonCfg, v1, v2 *ResourceSConfig) *Resourc
if v1.IndexedSelects != v2.IndexedSelects {
d.Indexed_selects = utils.BoolPointer(v2.IndexedSelects)
}
- if !utils.SliceStringEqual(v1.ThresholdSConns, v2.ThresholdSConns) {
+ if !slices.Equal(v1.ThresholdSConns, v2.ThresholdSConns) {
d.Thresholds_conns = utils.SliceStringPointer(getInternalJSONConns(v2.ThresholdSConns))
}
if v1.StoreInterval != v2.StoreInterval {
diff --git a/config/routescfg.go b/config/routescfg.go
index 55a25feae..5affc4016 100644
--- a/config/routescfg.go
+++ b/config/routescfg.go
@@ -19,6 +19,7 @@ along with this program. If not, see
package config
import (
+ "slices"
"time"
"github.com/cgrates/birpc/context"
@@ -122,19 +123,19 @@ func (rts *RouteSCfg) loadFromJSONCfg(jsnCfg *RouteSJsonCfg) (err error) {
rts.IndexedSelects = *jsnCfg.Indexed_selects
}
if jsnCfg.String_indexed_fields != nil {
- rts.StringIndexedFields = utils.SliceStringPointer(utils.CloneStringSlice(*jsnCfg.String_indexed_fields))
+ rts.StringIndexedFields = utils.SliceStringPointer(slices.Clone(*jsnCfg.String_indexed_fields))
}
if jsnCfg.Prefix_indexed_fields != nil {
- rts.PrefixIndexedFields = utils.SliceStringPointer(utils.CloneStringSlice(*jsnCfg.Prefix_indexed_fields))
+ rts.PrefixIndexedFields = utils.SliceStringPointer(slices.Clone(*jsnCfg.Prefix_indexed_fields))
}
if jsnCfg.Suffix_indexed_fields != nil {
- rts.SuffixIndexedFields = utils.SliceStringPointer(utils.CloneStringSlice(*jsnCfg.Suffix_indexed_fields))
+ rts.SuffixIndexedFields = utils.SliceStringPointer(slices.Clone(*jsnCfg.Suffix_indexed_fields))
}
if jsnCfg.Exists_indexed_fields != nil {
- rts.ExistsIndexedFields = utils.SliceStringPointer(utils.CloneStringSlice(*jsnCfg.Exists_indexed_fields))
+ rts.ExistsIndexedFields = utils.SliceStringPointer(slices.Clone(*jsnCfg.Exists_indexed_fields))
}
if jsnCfg.Notexists_indexed_fields != nil {
- rts.NotExistsIndexedFields = utils.SliceStringPointer(utils.CloneStringSlice(*jsnCfg.Notexists_indexed_fields))
+ rts.NotExistsIndexedFields = utils.SliceStringPointer(slices.Clone(*jsnCfg.Notexists_indexed_fields))
}
if jsnCfg.Attributes_conns != nil {
rts.AttributeSConns = updateInternalConns(*jsnCfg.Attributes_conns, utils.MetaAttributes)
@@ -229,19 +230,19 @@ func (rts RouteSCfg) AsMapInterface(string) any {
utils.OptsCfg: opts,
}
if rts.StringIndexedFields != nil {
- mp[utils.StringIndexedFieldsCfg] = utils.CloneStringSlice(*rts.StringIndexedFields)
+ mp[utils.StringIndexedFieldsCfg] = slices.Clone(*rts.StringIndexedFields)
}
if rts.PrefixIndexedFields != nil {
- mp[utils.PrefixIndexedFieldsCfg] = utils.CloneStringSlice(*rts.PrefixIndexedFields)
+ mp[utils.PrefixIndexedFieldsCfg] = slices.Clone(*rts.PrefixIndexedFields)
}
if rts.SuffixIndexedFields != nil {
- mp[utils.SuffixIndexedFieldsCfg] = utils.CloneStringSlice(*rts.SuffixIndexedFields)
+ mp[utils.SuffixIndexedFieldsCfg] = slices.Clone(*rts.SuffixIndexedFields)
}
if rts.ExistsIndexedFields != nil {
- mp[utils.ExistsIndexedFieldsCfg] = utils.CloneStringSlice(*rts.ExistsIndexedFields)
+ mp[utils.ExistsIndexedFieldsCfg] = slices.Clone(*rts.ExistsIndexedFields)
}
if rts.NotExistsIndexedFields != nil {
- mp[utils.NotExistsIndexedFieldsCfg] = utils.CloneStringSlice(*rts.NotExistsIndexedFields)
+ mp[utils.NotExistsIndexedFieldsCfg] = slices.Clone(*rts.NotExistsIndexedFields)
}
if rts.AttributeSConns != nil {
mp[utils.AttributeSConnsCfg] = getInternalJSONConns(rts.AttributeSConns)
@@ -274,34 +275,34 @@ func (rts RouteSCfg) Clone() (cln *RouteSCfg) {
Opts: rts.Opts.Clone(),
}
if rts.AttributeSConns != nil {
- cln.AttributeSConns = utils.CloneStringSlice(rts.AttributeSConns)
+ cln.AttributeSConns = slices.Clone(rts.AttributeSConns)
}
if rts.ResourceSConns != nil {
- cln.ResourceSConns = utils.CloneStringSlice(rts.ResourceSConns)
+ cln.ResourceSConns = slices.Clone(rts.ResourceSConns)
}
if rts.StatSConns != nil {
- cln.StatSConns = utils.CloneStringSlice(rts.StatSConns)
+ cln.StatSConns = slices.Clone(rts.StatSConns)
}
if rts.RateSConns != nil {
- cln.RateSConns = utils.CloneStringSlice(rts.RateSConns)
+ cln.RateSConns = slices.Clone(rts.RateSConns)
}
if rts.AccountSConns != nil {
- cln.AccountSConns = utils.CloneStringSlice(rts.AccountSConns)
+ cln.AccountSConns = slices.Clone(rts.AccountSConns)
}
if rts.StringIndexedFields != nil {
- cln.StringIndexedFields = utils.SliceStringPointer(utils.CloneStringSlice(*rts.StringIndexedFields))
+ cln.StringIndexedFields = utils.SliceStringPointer(slices.Clone(*rts.StringIndexedFields))
}
if rts.PrefixIndexedFields != nil {
- cln.PrefixIndexedFields = utils.SliceStringPointer(utils.CloneStringSlice(*rts.PrefixIndexedFields))
+ cln.PrefixIndexedFields = utils.SliceStringPointer(slices.Clone(*rts.PrefixIndexedFields))
}
if rts.SuffixIndexedFields != nil {
- cln.SuffixIndexedFields = utils.SliceStringPointer(utils.CloneStringSlice(*rts.SuffixIndexedFields))
+ cln.SuffixIndexedFields = utils.SliceStringPointer(slices.Clone(*rts.SuffixIndexedFields))
}
if rts.ExistsIndexedFields != nil {
- cln.ExistsIndexedFields = utils.SliceStringPointer(utils.CloneStringSlice(*rts.ExistsIndexedFields))
+ cln.ExistsIndexedFields = utils.SliceStringPointer(slices.Clone(*rts.ExistsIndexedFields))
}
if rts.NotExistsIndexedFields != nil {
- cln.NotExistsIndexedFields = utils.SliceStringPointer(utils.CloneStringSlice(*rts.NotExistsIndexedFields))
+ cln.NotExistsIndexedFields = utils.SliceStringPointer(slices.Clone(*rts.NotExistsIndexedFields))
}
return
}
@@ -385,19 +386,19 @@ func diffRouteSJsonCfg(d *RouteSJsonCfg, v1, v2 *RouteSCfg) *RouteSJsonCfg {
if v1.NestedFields != v2.NestedFields {
d.Nested_fields = utils.BoolPointer(v2.NestedFields)
}
- if !utils.SliceStringEqual(v1.AttributeSConns, v2.AttributeSConns) {
+ if !slices.Equal(v1.AttributeSConns, v2.AttributeSConns) {
d.Attributes_conns = utils.SliceStringPointer(getInternalJSONConns(v2.AttributeSConns))
}
- if !utils.SliceStringEqual(v1.ResourceSConns, v2.ResourceSConns) {
+ if !slices.Equal(v1.ResourceSConns, v2.ResourceSConns) {
d.Resources_conns = utils.SliceStringPointer(getInternalJSONConns(v2.ResourceSConns))
}
- if !utils.SliceStringEqual(v1.StatSConns, v2.StatSConns) {
+ if !slices.Equal(v1.StatSConns, v2.StatSConns) {
d.Stats_conns = utils.SliceStringPointer(getInternalJSONConns(v2.StatSConns))
}
- if !utils.SliceStringEqual(v1.RateSConns, v2.RateSConns) {
+ if !slices.Equal(v1.RateSConns, v2.RateSConns) {
d.Rates_conns = utils.SliceStringPointer(getInternalJSONConns(v2.RateSConns))
}
- if !utils.SliceStringEqual(v1.AccountSConns, v2.AccountSConns) {
+ if !slices.Equal(v1.AccountSConns, v2.AccountSConns) {
d.Accounts_conns = utils.SliceStringPointer(getInternalJSONConns(v2.AccountSConns))
}
if v1.DefaultRatio != v2.DefaultRatio {
diff --git a/config/sessionscfg.go b/config/sessionscfg.go
index b98cb7675..65af001ed 100644
--- a/config/sessionscfg.go
+++ b/config/sessionscfg.go
@@ -20,6 +20,7 @@ package config
import (
"fmt"
+ "slices"
"strconv"
"time"
@@ -639,37 +640,37 @@ func (scfg SessionSCfg) Clone() (cln *SessionSCfg) {
cln.DefaultUsage[k] = v
}
if scfg.ChargerSConns != nil {
- cln.ChargerSConns = utils.CloneStringSlice(scfg.ChargerSConns)
+ cln.ChargerSConns = slices.Clone(scfg.ChargerSConns)
}
if scfg.ResourceSConns != nil {
- cln.ResourceSConns = utils.CloneStringSlice(scfg.ResourceSConns)
+ cln.ResourceSConns = slices.Clone(scfg.ResourceSConns)
}
if scfg.ThresholdSConns != nil {
- cln.ThresholdSConns = utils.CloneStringSlice(scfg.ThresholdSConns)
+ cln.ThresholdSConns = slices.Clone(scfg.ThresholdSConns)
}
if scfg.StatSConns != nil {
- cln.StatSConns = utils.CloneStringSlice(scfg.StatSConns)
+ cln.StatSConns = slices.Clone(scfg.StatSConns)
}
if scfg.RouteSConns != nil {
- cln.RouteSConns = utils.CloneStringSlice(scfg.RouteSConns)
+ cln.RouteSConns = slices.Clone(scfg.RouteSConns)
}
if scfg.AttributeSConns != nil {
- cln.AttributeSConns = utils.CloneStringSlice(scfg.AttributeSConns)
+ cln.AttributeSConns = slices.Clone(scfg.AttributeSConns)
}
if scfg.CDRsConns != nil {
- cln.CDRsConns = utils.CloneStringSlice(scfg.CDRsConns)
+ cln.CDRsConns = slices.Clone(scfg.CDRsConns)
}
if scfg.ReplicationConns != nil {
- cln.ReplicationConns = utils.CloneStringSlice(scfg.ReplicationConns)
+ cln.ReplicationConns = slices.Clone(scfg.ReplicationConns)
}
if scfg.ActionSConns != nil {
- cln.ActionSConns = utils.CloneStringSlice(scfg.ActionSConns)
+ cln.ActionSConns = slices.Clone(scfg.ActionSConns)
}
if scfg.RateSConns != nil {
- cln.RateSConns = utils.CloneStringSlice(scfg.RateSConns)
+ cln.RateSConns = slices.Clone(scfg.RateSConns)
}
if scfg.AccountSConns != nil {
- cln.AccountSConns = utils.CloneStringSlice(scfg.AccountSConns)
+ cln.AccountSConns = slices.Clone(scfg.AccountSConns)
}
return
@@ -944,34 +945,34 @@ func diffSessionSJsonCfg(d *SessionSJsonCfg, v1, v2 *SessionSCfg) *SessionSJsonC
if v1.ListenBigob != v2.ListenBigob {
d.Listen_bigob = utils.StringPointer(v2.ListenBigob)
}
- if !utils.SliceStringEqual(v1.ChargerSConns, v2.ChargerSConns) {
+ if !slices.Equal(v1.ChargerSConns, v2.ChargerSConns) {
d.Chargers_conns = utils.SliceStringPointer(getInternalJSONConns(v2.ChargerSConns))
}
- if !utils.SliceStringEqual(v1.ResourceSConns, v2.ResourceSConns) {
+ if !slices.Equal(v1.ResourceSConns, v2.ResourceSConns) {
d.Resources_conns = utils.SliceStringPointer(getInternalJSONConns(v2.ResourceSConns))
}
- if !utils.SliceStringEqual(v1.ThresholdSConns, v2.ThresholdSConns) {
+ if !slices.Equal(v1.ThresholdSConns, v2.ThresholdSConns) {
d.Thresholds_conns = utils.SliceStringPointer(getInternalJSONConns(v2.ThresholdSConns))
}
- if !utils.SliceStringEqual(v1.StatSConns, v2.StatSConns) {
+ if !slices.Equal(v1.StatSConns, v2.StatSConns) {
d.Stats_conns = utils.SliceStringPointer(getInternalJSONConns(v2.StatSConns))
}
- if !utils.SliceStringEqual(v1.RouteSConns, v2.RouteSConns) {
+ if !slices.Equal(v1.RouteSConns, v2.RouteSConns) {
d.Routes_conns = utils.SliceStringPointer(getInternalJSONConns(v2.RouteSConns))
}
- if !utils.SliceStringEqual(v1.AttributeSConns, v2.AttributeSConns) {
+ if !slices.Equal(v1.AttributeSConns, v2.AttributeSConns) {
d.Cdrs_conns = utils.SliceStringPointer(getInternalJSONConns(v2.AttributeSConns))
}
- if !utils.SliceStringEqual(v1.CDRsConns, v2.CDRsConns) {
+ if !slices.Equal(v1.CDRsConns, v2.CDRsConns) {
d.Replication_conns = utils.SliceStringPointer(getInternalJSONConns(v2.CDRsConns))
}
- if !utils.SliceStringEqual(v1.ReplicationConns, v2.ReplicationConns) {
+ if !slices.Equal(v1.ReplicationConns, v2.ReplicationConns) {
d.Attributes_conns = utils.SliceStringPointer(v2.ReplicationConns)
}
- if !utils.SliceStringEqual(v1.RateSConns, v2.RateSConns) {
+ if !slices.Equal(v1.RateSConns, v2.RateSConns) {
d.Rates_conns = utils.SliceStringPointer(getInternalJSONConns(v2.RateSConns))
}
- if !utils.SliceStringEqual(v1.AccountSConns, v2.AccountSConns) {
+ if !slices.Equal(v1.AccountSConns, v2.AccountSConns) {
d.Accounts_conns = utils.SliceStringPointer(getInternalJSONConns(v2.AccountSConns))
}
if v1.StoreSCosts != v2.StoreSCosts {
@@ -995,7 +996,7 @@ func diffSessionSJsonCfg(d *SessionSJsonCfg, v1, v2 *SessionSCfg) *SessionSJsonC
if v1.MinDurLowBalance != v2.MinDurLowBalance {
d.Min_dur_low_balance = utils.StringPointer(v2.MinDurLowBalance.String())
}
- if !utils.SliceStringEqual(v1.ActionSConns, v2.ActionSConns) {
+ if !slices.Equal(v1.ActionSConns, v2.ActionSConns) {
d.Actions_conns = utils.SliceStringPointer(getInternalJSONConns(v2.ActionSConns))
}
d.Stir = diffSTIRJsonCfg(d.Stir, v1.STIRCfg, v2.STIRCfg)
diff --git a/config/sipagentcfg.go b/config/sipagentcfg.go
index c6d660d5f..4b3ba5cca 100644
--- a/config/sipagentcfg.go
+++ b/config/sipagentcfg.go
@@ -19,6 +19,7 @@ along with this program. If not, see
package config
import (
+ "slices"
"time"
"github.com/cgrates/birpc/context"
@@ -108,7 +109,7 @@ func (sa SIPAgentCfg) Clone() (cln *SIPAgentCfg) {
RetransmissionTimer: sa.RetransmissionTimer,
}
if sa.SessionSConns != nil {
- cln.SessionSConns = utils.CloneStringSlice(sa.SessionSConns)
+ cln.SessionSConns = slices.Clone(sa.SessionSConns)
}
if sa.RequestProcessors != nil {
cln.RequestProcessors = make([]*RequestProcessor, len(sa.RequestProcessors))
@@ -143,7 +144,7 @@ func diffSIPAgentJsonCfg(d *SIPAgentJsonCfg, v1, v2 *SIPAgentCfg, separator stri
if v1.ListenNet != v2.ListenNet {
d.Listen_net = utils.StringPointer(v2.ListenNet)
}
- if !utils.SliceStringEqual(v1.SessionSConns, v2.SessionSConns) {
+ if !slices.Equal(v1.SessionSConns, v2.SessionSConns) {
d.Sessions_conns = utils.SliceStringPointer(getBiRPCInternalJSONConns(v2.SessionSConns))
}
if v1.Timezone != v2.Timezone {
diff --git a/config/statscfg.go b/config/statscfg.go
index 95f3fc50a..6fa0b53f2 100644
--- a/config/statscfg.go
+++ b/config/statscfg.go
@@ -19,6 +19,7 @@ along with this program. If not, see
package config
import (
+ "slices"
"time"
"github.com/cgrates/birpc/context"
@@ -101,19 +102,19 @@ func (st *StatSCfg) loadFromJSONCfg(jsnCfg *StatServJsonCfg) (err error) {
st.ThresholdSConns = updateInternalConns(*jsnCfg.Thresholds_conns, utils.MetaThresholds)
}
if jsnCfg.String_indexed_fields != nil {
- st.StringIndexedFields = utils.SliceStringPointer(utils.CloneStringSlice((*jsnCfg.String_indexed_fields)))
+ st.StringIndexedFields = utils.SliceStringPointer(slices.Clone((*jsnCfg.String_indexed_fields)))
}
if jsnCfg.Prefix_indexed_fields != nil {
- st.PrefixIndexedFields = utils.SliceStringPointer(utils.CloneStringSlice((*jsnCfg.Prefix_indexed_fields)))
+ st.PrefixIndexedFields = utils.SliceStringPointer(slices.Clone((*jsnCfg.Prefix_indexed_fields)))
}
if jsnCfg.Suffix_indexed_fields != nil {
- st.SuffixIndexedFields = utils.SliceStringPointer(utils.CloneStringSlice((*jsnCfg.Suffix_indexed_fields)))
+ st.SuffixIndexedFields = utils.SliceStringPointer(slices.Clone((*jsnCfg.Suffix_indexed_fields)))
}
if jsnCfg.Exists_indexed_fields != nil {
- st.ExistsIndexedFields = utils.SliceStringPointer(utils.CloneStringSlice(*jsnCfg.Exists_indexed_fields))
+ st.ExistsIndexedFields = utils.SliceStringPointer(slices.Clone(*jsnCfg.Exists_indexed_fields))
}
if jsnCfg.Notexists_indexed_fields != nil {
- st.NotExistsIndexedFields = utils.SliceStringPointer(utils.CloneStringSlice(*jsnCfg.Notexists_indexed_fields))
+ st.NotExistsIndexedFields = utils.SliceStringPointer(slices.Clone(*jsnCfg.Notexists_indexed_fields))
}
if jsnCfg.Nested_fields != nil {
st.NestedFields = *jsnCfg.Nested_fields
@@ -144,19 +145,19 @@ func (st StatSCfg) AsMapInterface(string) any {
mp[utils.StoreIntervalCfg] = st.StoreInterval.String()
}
if st.StringIndexedFields != nil {
- mp[utils.StringIndexedFieldsCfg] = utils.CloneStringSlice(*st.StringIndexedFields)
+ mp[utils.StringIndexedFieldsCfg] = slices.Clone(*st.StringIndexedFields)
}
if st.PrefixIndexedFields != nil {
- mp[utils.PrefixIndexedFieldsCfg] = utils.CloneStringSlice(*st.PrefixIndexedFields)
+ mp[utils.PrefixIndexedFieldsCfg] = slices.Clone(*st.PrefixIndexedFields)
}
if st.SuffixIndexedFields != nil {
- mp[utils.SuffixIndexedFieldsCfg] = utils.CloneStringSlice(*st.SuffixIndexedFields)
+ mp[utils.SuffixIndexedFieldsCfg] = slices.Clone(*st.SuffixIndexedFields)
}
if st.ExistsIndexedFields != nil {
- mp[utils.ExistsIndexedFieldsCfg] = utils.CloneStringSlice(*st.ExistsIndexedFields)
+ mp[utils.ExistsIndexedFieldsCfg] = slices.Clone(*st.ExistsIndexedFields)
}
if st.NotExistsIndexedFields != nil {
- mp[utils.NotExistsIndexedFieldsCfg] = utils.CloneStringSlice(*st.NotExistsIndexedFields)
+ mp[utils.NotExistsIndexedFieldsCfg] = slices.Clone(*st.NotExistsIndexedFields)
}
if st.ThresholdSConns != nil {
mp[utils.ThresholdSConnsCfg] = getInternalJSONConns(st.ThresholdSConns)
@@ -203,22 +204,22 @@ func (st StatSCfg) Clone() (cln *StatSCfg) {
Opts: st.Opts.Clone(),
}
if st.ThresholdSConns != nil {
- cln.ThresholdSConns = utils.CloneStringSlice(st.ThresholdSConns)
+ cln.ThresholdSConns = slices.Clone(st.ThresholdSConns)
}
if st.StringIndexedFields != nil {
- cln.StringIndexedFields = utils.SliceStringPointer(utils.CloneStringSlice(*st.StringIndexedFields))
+ cln.StringIndexedFields = utils.SliceStringPointer(slices.Clone(*st.StringIndexedFields))
}
if st.PrefixIndexedFields != nil {
- cln.PrefixIndexedFields = utils.SliceStringPointer(utils.CloneStringSlice(*st.PrefixIndexedFields))
+ cln.PrefixIndexedFields = utils.SliceStringPointer(slices.Clone(*st.PrefixIndexedFields))
}
if st.SuffixIndexedFields != nil {
- cln.SuffixIndexedFields = utils.SliceStringPointer(utils.CloneStringSlice(*st.SuffixIndexedFields))
+ cln.SuffixIndexedFields = utils.SliceStringPointer(slices.Clone(*st.SuffixIndexedFields))
}
if st.ExistsIndexedFields != nil {
- cln.ExistsIndexedFields = utils.SliceStringPointer(utils.CloneStringSlice(*st.ExistsIndexedFields))
+ cln.ExistsIndexedFields = utils.SliceStringPointer(slices.Clone(*st.ExistsIndexedFields))
}
if st.NotExistsIndexedFields != nil {
- cln.NotExistsIndexedFields = utils.SliceStringPointer(utils.CloneStringSlice(*st.NotExistsIndexedFields))
+ cln.NotExistsIndexedFields = utils.SliceStringPointer(slices.Clone(*st.NotExistsIndexedFields))
}
return
}
@@ -281,7 +282,7 @@ func diffStatServJsonCfg(d *StatServJsonCfg, v1, v2 *StatSCfg) *StatServJsonCfg
if v1.StoreUncompressedLimit != v2.StoreUncompressedLimit {
d.Store_uncompressed_limit = utils.IntPointer(v2.StoreUncompressedLimit)
}
- if !utils.SliceStringEqual(v1.ThresholdSConns, v2.ThresholdSConns) {
+ if !slices.Equal(v1.ThresholdSConns, v2.ThresholdSConns) {
d.Thresholds_conns = utils.SliceStringPointer(getInternalJSONConns(v2.ThresholdSConns))
}
d.String_indexed_fields = diffIndexSlice(d.String_indexed_fields, v1.StringIndexedFields, v2.StringIndexedFields)
diff --git a/config/stordbcfg.go b/config/stordbcfg.go
index 1ef0b66e8..d4ef604b4 100644
--- a/config/stordbcfg.go
+++ b/config/stordbcfg.go
@@ -21,6 +21,7 @@ package config
import (
"fmt"
"reflect"
+ "slices"
"strconv"
"strings"
"time"
@@ -199,16 +200,16 @@ func (dbcfg StorDbCfg) Clone() (cln *StorDbCfg) {
cln.Items[key] = item.Clone()
}
if dbcfg.StringIndexedFields != nil {
- cln.StringIndexedFields = utils.CloneStringSlice(dbcfg.StringIndexedFields)
+ cln.StringIndexedFields = slices.Clone(dbcfg.StringIndexedFields)
}
if dbcfg.PrefixIndexedFields != nil {
- cln.PrefixIndexedFields = utils.CloneStringSlice(dbcfg.PrefixIndexedFields)
+ cln.PrefixIndexedFields = slices.Clone(dbcfg.PrefixIndexedFields)
}
if dbcfg.RmtConns != nil {
- cln.RmtConns = utils.CloneStringSlice(dbcfg.RmtConns)
+ cln.RmtConns = slices.Clone(dbcfg.RmtConns)
}
if dbcfg.RplConns != nil {
- cln.RplConns = utils.CloneStringSlice(dbcfg.RplConns)
+ cln.RplConns = slices.Clone(dbcfg.RplConns)
}
return
}
@@ -301,18 +302,18 @@ func diffStorDBJsonCfg(d *DbJsonCfg, v1, v2 *StorDbCfg) *DbJsonCfg {
if v1.Password != v2.Password {
d.Db_password = utils.StringPointer(v2.Password)
}
- if !utils.SliceStringEqual(v1.RmtConns, v2.RmtConns) {
+ if !slices.Equal(v1.RmtConns, v2.RmtConns) {
d.Remote_conns = &v2.RmtConns
}
- if !utils.SliceStringEqual(v1.RplConns, v2.RplConns) {
+ if !slices.Equal(v1.RplConns, v2.RplConns) {
d.Replication_conns = &v2.RplConns
}
- if !utils.SliceStringEqual(v1.StringIndexedFields, v2.StringIndexedFields) {
+ if !slices.Equal(v1.StringIndexedFields, v2.StringIndexedFields) {
d.String_indexed_fields = &v2.StringIndexedFields
}
- if !utils.SliceStringEqual(v1.PrefixIndexedFields, v2.PrefixIndexedFields) {
+ if !slices.Equal(v1.PrefixIndexedFields, v2.PrefixIndexedFields) {
d.Prefix_indexed_fields = &v2.PrefixIndexedFields
}
diff --git a/config/thresholdscfg.go b/config/thresholdscfg.go
index 6bb541177..55c1b404f 100644
--- a/config/thresholdscfg.go
+++ b/config/thresholdscfg.go
@@ -19,6 +19,7 @@ along with this program. If not, see
package config
import (
+ "slices"
"time"
"github.com/cgrates/birpc/context"
@@ -86,19 +87,19 @@ func (t *ThresholdSCfg) loadFromJSONCfg(jsnCfg *ThresholdSJsonCfg) (err error) {
}
}
if jsnCfg.String_indexed_fields != nil {
- t.StringIndexedFields = utils.SliceStringPointer(utils.CloneStringSlice(*jsnCfg.String_indexed_fields))
+ t.StringIndexedFields = utils.SliceStringPointer(slices.Clone(*jsnCfg.String_indexed_fields))
}
if jsnCfg.Prefix_indexed_fields != nil {
- t.PrefixIndexedFields = utils.SliceStringPointer(utils.CloneStringSlice(*jsnCfg.Prefix_indexed_fields))
+ t.PrefixIndexedFields = utils.SliceStringPointer(slices.Clone(*jsnCfg.Prefix_indexed_fields))
}
if jsnCfg.Suffix_indexed_fields != nil {
- t.SuffixIndexedFields = utils.SliceStringPointer(utils.CloneStringSlice(*jsnCfg.Suffix_indexed_fields))
+ t.SuffixIndexedFields = utils.SliceStringPointer(slices.Clone(*jsnCfg.Suffix_indexed_fields))
}
if jsnCfg.Exists_indexed_fields != nil {
- t.ExistsIndexedFields = utils.SliceStringPointer(utils.CloneStringSlice(*jsnCfg.Exists_indexed_fields))
+ t.ExistsIndexedFields = utils.SliceStringPointer(slices.Clone(*jsnCfg.Exists_indexed_fields))
}
if jsnCfg.Notexists_indexed_fields != nil {
- t.NotExistsIndexedFields = utils.SliceStringPointer(utils.CloneStringSlice(*jsnCfg.Notexists_indexed_fields))
+ t.NotExistsIndexedFields = utils.SliceStringPointer(slices.Clone(*jsnCfg.Notexists_indexed_fields))
}
if jsnCfg.Nested_fields != nil {
t.NestedFields = *jsnCfg.Nested_fields
@@ -130,19 +131,19 @@ func (t ThresholdSCfg) AsMapInterface(string) any {
}
if t.StringIndexedFields != nil {
- mp[utils.StringIndexedFieldsCfg] = utils.CloneStringSlice(*t.StringIndexedFields)
+ mp[utils.StringIndexedFieldsCfg] = slices.Clone(*t.StringIndexedFields)
}
if t.PrefixIndexedFields != nil {
- mp[utils.PrefixIndexedFieldsCfg] = utils.CloneStringSlice(*t.PrefixIndexedFields)
+ mp[utils.PrefixIndexedFieldsCfg] = slices.Clone(*t.PrefixIndexedFields)
}
if t.SuffixIndexedFields != nil {
- mp[utils.SuffixIndexedFieldsCfg] = utils.CloneStringSlice(*t.SuffixIndexedFields)
+ mp[utils.SuffixIndexedFieldsCfg] = slices.Clone(*t.SuffixIndexedFields)
}
if t.ExistsIndexedFields != nil {
- mp[utils.ExistsIndexedFieldsCfg] = utils.CloneStringSlice(*t.ExistsIndexedFields)
+ mp[utils.ExistsIndexedFieldsCfg] = slices.Clone(*t.ExistsIndexedFields)
}
if t.NotExistsIndexedFields != nil {
- mp[utils.NotExistsIndexedFieldsCfg] = utils.CloneStringSlice(*t.NotExistsIndexedFields)
+ mp[utils.NotExistsIndexedFieldsCfg] = slices.Clone(*t.NotExistsIndexedFields)
}
if t.ActionSConns != nil {
mp[utils.ActionSConnsCfg] = getInternalJSONConns(t.ActionSConns)
@@ -179,22 +180,22 @@ func (t ThresholdSCfg) Clone() (cln *ThresholdSCfg) {
}
if t.StringIndexedFields != nil {
- cln.StringIndexedFields = utils.SliceStringPointer(utils.CloneStringSlice(*t.StringIndexedFields))
+ cln.StringIndexedFields = utils.SliceStringPointer(slices.Clone(*t.StringIndexedFields))
}
if t.PrefixIndexedFields != nil {
- cln.PrefixIndexedFields = utils.SliceStringPointer(utils.CloneStringSlice(*t.PrefixIndexedFields))
+ cln.PrefixIndexedFields = utils.SliceStringPointer(slices.Clone(*t.PrefixIndexedFields))
}
if t.SuffixIndexedFields != nil {
- cln.SuffixIndexedFields = utils.SliceStringPointer(utils.CloneStringSlice(*t.SuffixIndexedFields))
+ cln.SuffixIndexedFields = utils.SliceStringPointer(slices.Clone(*t.SuffixIndexedFields))
}
if t.ExistsIndexedFields != nil {
- cln.ExistsIndexedFields = utils.SliceStringPointer(utils.CloneStringSlice(*t.ExistsIndexedFields))
+ cln.ExistsIndexedFields = utils.SliceStringPointer(slices.Clone(*t.ExistsIndexedFields))
}
if t.NotExistsIndexedFields != nil {
- cln.NotExistsIndexedFields = utils.SliceStringPointer(utils.CloneStringSlice(*t.NotExistsIndexedFields))
+ cln.NotExistsIndexedFields = utils.SliceStringPointer(slices.Clone(*t.NotExistsIndexedFields))
}
if t.ActionSConns != nil {
- cln.ActionSConns = utils.CloneStringSlice(t.ActionSConns)
+ cln.ActionSConns = slices.Clone(t.ActionSConns)
}
return
}
@@ -253,7 +254,7 @@ func diffThresholdSJsonCfg(d *ThresholdSJsonCfg, v1, v2 *ThresholdSCfg) *Thresho
if v1.NestedFields != v2.NestedFields {
d.Nested_fields = utils.BoolPointer(v2.NestedFields)
}
- if !utils.SliceStringEqual(v1.ActionSConns, v2.ActionSConns) {
+ if !slices.Equal(v1.ActionSConns, v2.ActionSConns) {
d.Actions_conns = utils.SliceStringPointer(getInternalJSONConns(v2.ActionSConns))
}
d.Opts = diffThresholdsOptsJsonCfg(d.Opts, v1.Opts, v2.Opts)
diff --git a/console/command_executer.go b/console/command_executer.go
index b518fdf57..ecf00639b 100644
--- a/console/command_executer.go
+++ b/console/command_executer.go
@@ -24,6 +24,7 @@ import (
"fmt"
"reflect"
"regexp"
+ "slices"
"sort"
"strings"
"time"
@@ -128,7 +129,7 @@ func FromJSON(jsn []byte, interestingFields []string) (line string) {
}
for _, group := range jsonR.FindAllSubmatch(jsn, -1) {
if len(group) == 3 {
- if utils.IsSliceMember(interestingFields, string(group[1])) {
+ if slices.Contains(interestingFields, string(group[1])) {
line += fmt.Sprintf("%s=%s ", group[1], group[2])
}
}
diff --git a/engine/attributes.go b/engine/attributes.go
index b498072c3..a524ae742 100644
--- a/engine/attributes.go
+++ b/engine/attributes.go
@@ -21,6 +21,7 @@ package engine
import (
"fmt"
"math"
+ "slices"
"sort"
"strconv"
"strings"
@@ -202,7 +203,7 @@ func (alS *AttributeS) processEvent(ctx *context.Context, tnt string, args *util
}
substitute := utils.IfaceAsString(out)
//add only once the Path in AlteredFields
- if !utils.IsSliceMember(rply.AlteredFields[0].Fields, attribute.Path) {
+ if !slices.Contains(rply.AlteredFields[0].Fields, attribute.Path) {
rply.AlteredFields[0].Fields = append(rply.AlteredFields[0].Fields, attribute.Path)
}
if attribute.Path == utils.MetaTenant {
diff --git a/engine/datamanager.go b/engine/datamanager.go
index 39f253356..bb3b0987b 100644
--- a/engine/datamanager.go
+++ b/engine/datamanager.go
@@ -20,6 +20,7 @@ package engine
import (
"fmt"
+ "slices"
"strings"
"github.com/cgrates/baningo"
@@ -894,7 +895,7 @@ func (dm *DataManager) SetStatQueueProfile(ctx *context.Context, sqp *StatQueueP
for _, metric := range sqp.Metrics { // add missing metrics and recreate the old metrics that changed
cMetricIDs.Add(metric.MetricID)
if oSqMetric, has := oSq.SQMetrics[metric.MetricID]; !has ||
- !utils.SliceStringEqual(oSqMetric.GetFilterIDs(), metric.FilterIDs) { // recreate it if the filter changed
+ !slices.Equal(oSqMetric.GetFilterIDs(), metric.FilterIDs) { // recreate it if the filter changed
if oSq.SQMetrics[metric.MetricID], err = NewStatMetric(metric.MetricID,
uint64(sqp.MinItems), metric.FilterIDs); err != nil {
return
diff --git a/engine/dispatcherprfl.go b/engine/dispatcherprfl.go
index 5e9eb9f78..38bb0b05c 100644
--- a/engine/dispatcherprfl.go
+++ b/engine/dispatcherprfl.go
@@ -20,6 +20,7 @@ package engine
import (
"math/rand"
+ "slices"
"sort"
"strconv"
"strings"
@@ -45,7 +46,7 @@ func (dC *DispatcherHostProfile) Clone() (cln *DispatcherHostProfile) {
Blocker: dC.Blocker,
}
if dC.FilterIDs != nil {
- cln.FilterIDs = utils.CloneStringSlice(dC.FilterIDs)
+ cln.FilterIDs = slices.Clone(dC.FilterIDs)
}
if dC.Params != nil {
cln.Params = make(map[string]any)
diff --git a/engine/exportrequest.go b/engine/exportrequest.go
index 17f745956..652bd9ef2 100644
--- a/engine/exportrequest.go
+++ b/engine/exportrequest.go
@@ -20,6 +20,7 @@ package engine
import (
"fmt"
+ "slices"
"strings"
"github.com/cgrates/birpc/context"
@@ -122,7 +123,7 @@ func (eeR *ExportRequest) SetFields(ctx *context.Context, tplFlds []*config.FCTe
return
} else if fullPath == nil { // no dynamic path
fullPath = &utils.FullPath{
- PathSlice: utils.CloneStringSlice(tplFld.GetPathSlice()), // need to clone so me do not modify the template
+ PathSlice: slices.Clone(tplFld.GetPathSlice()), // need to clone so me do not modify the template
Path: tplFld.Path,
}
}
diff --git a/engine/filters.go b/engine/filters.go
index a6cb7bbdb..dcb4c1da6 100644
--- a/engine/filters.go
+++ b/engine/filters.go
@@ -23,6 +23,7 @@ import (
"net"
"reflect"
"regexp"
+ "slices"
"strconv"
"strings"
"time"
@@ -292,7 +293,7 @@ func (fltr *FilterRule) IsValid() bool {
if fltr.Element == utils.EmptyString {
return fltr.Type == utils.MetaNever
}
- if len(fltr.Values) == 0 && !utils.IsSliceMember([]string{utils.MetaExists, utils.MetaNotExists,
+ if len(fltr.Values) == 0 && !slices.Contains([]string{utils.MetaExists, utils.MetaNotExists,
utils.MetaEmpty, utils.MetaNotEmpty}, fltr.Type) {
return false
}
diff --git a/engine/libdynopts.go b/engine/libdynopts.go
index 1019fb209..5e9256650 100644
--- a/engine/libdynopts.go
+++ b/engine/libdynopts.go
@@ -19,6 +19,7 @@ along with this program. If not, see
package engine
import (
+ "slices"
"time"
"github.com/cgrates/birpc/context"
@@ -37,7 +38,7 @@ func GetFloat64Opts(ctx *context.Context, tnt string, ev *utils.CGREvent, fS *Fi
}
evDP := ev.AsDataProvider()
for _, opt := range dynOpts { // iterate through the options
- if !utils.IsSliceMember([]string{utils.EmptyString, utils.MetaAny, tnt}, opt.Tenant) {
+ if !slices.Contains([]string{utils.EmptyString, utils.MetaAny, tnt}, opt.Tenant) {
continue
}
if pass, err := fS.Pass(ctx, tnt, opt.FilterIDs, evDP); err != nil { // check if the filter is passing for the DataProvider and return the option if it does
@@ -60,7 +61,7 @@ func GetDurationOpts(ctx *context.Context, tnt string, ev *utils.CGREvent, fS *F
}
evDP := ev.AsDataProvider()
for _, opt := range dynOpts { // iterate through the options
- if !utils.IsSliceMember([]string{utils.EmptyString, utils.MetaAny, tnt}, opt.Tenant) {
+ if !slices.Contains([]string{utils.EmptyString, utils.MetaAny, tnt}, opt.Tenant) {
continue
}
if pass, err := fS.Pass(ctx, tnt, opt.FilterIDs, evDP); err != nil { // check if the filter is passing for the DataProvider and return the option if it does
@@ -83,7 +84,7 @@ func GetStringOpts(ctx *context.Context, tnt string, ev *utils.CGREvent, fS *Fil
}
evDP := ev.AsDataProvider()
for _, opt := range dynOpts { // iterate through the options
- if !utils.IsSliceMember([]string{utils.EmptyString, utils.MetaAny, tnt}, opt.Tenant) {
+ if !slices.Contains([]string{utils.EmptyString, utils.MetaAny, tnt}, opt.Tenant) {
continue
}
if pass, err := fS.Pass(ctx, tnt, opt.FilterIDs, evDP); err != nil { // check if the filter is passing for the DataProvider and return the option if it does
@@ -106,7 +107,7 @@ func GetTimeOpts(ctx *context.Context, tnt string, ev *utils.CGREvent, fS *Filte
}
evDP := ev.AsDataProvider()
for _, opt := range dynOpts { // iterate through the options
- if !utils.IsSliceMember([]string{utils.EmptyString, utils.MetaAny, tnt}, opt.Tenant) {
+ if !slices.Contains([]string{utils.EmptyString, utils.MetaAny, tnt}, opt.Tenant) {
continue
}
var pass bool
@@ -130,7 +131,7 @@ func GetStringSliceOpts(ctx *context.Context, tnt string, ev *utils.CGREvent, fS
}
evDP := ev.AsDataProvider()
for _, opt := range dynOpts { // iterate through the options
- if !utils.IsSliceMember([]string{utils.EmptyString, utils.MetaAny, tnt}, opt.Tenant) {
+ if !slices.Contains([]string{utils.EmptyString, utils.MetaAny, tnt}, opt.Tenant) {
continue
}
if pass, err := fS.Pass(ctx, tnt, opt.FilterIDs, evDP); err != nil { // check if the filter is passing for the DataProvider and return the option if it does
@@ -157,7 +158,7 @@ func GetIntOpts(ctx *context.Context, tnt string, ev *utils.CGREvent, fS *Filter
}
evDP := ev.AsDataProvider()
for _, opt := range dynOpts { // iterate through the options
- if !utils.IsSliceMember([]string{utils.EmptyString, utils.MetaAny, tnt}, opt.Tenant) {
+ if !slices.Contains([]string{utils.EmptyString, utils.MetaAny, tnt}, opt.Tenant) {
continue
}
if pass, err := fS.Pass(ctx, tnt, opt.FilterIDs, evDP); err != nil { // check if the filter is passing for the DataProvider and return the option if it does
@@ -188,7 +189,7 @@ func GetBoolOpts(ctx *context.Context, tnt string, dP utils.DataProvider, fS *Fi
}
}
for _, opt := range dynOpts { // iterate through the options
- if !utils.IsSliceMember([]string{utils.EmptyString, utils.MetaAny, tnt}, opt.Tenant) {
+ if !slices.Contains([]string{utils.EmptyString, utils.MetaAny, tnt}, opt.Tenant) {
continue
}
if pass, err := fS.Pass(ctx, tnt, opt.FilterIDs, dP); err != nil { // check if the filter is passing for the DataProvider and return the option if it does
@@ -211,7 +212,7 @@ func GetDecimalBigOpts(ctx *context.Context, tnt string, ev *utils.CGREvent, fS
}
evDP := ev.AsDataProvider()
for _, opt := range dynOpts { // iterate through the options
- if !utils.IsSliceMember([]string{utils.EmptyString, utils.MetaAny, tnt}, opt.Tenant) {
+ if !slices.Contains([]string{utils.EmptyString, utils.MetaAny, tnt}, opt.Tenant) {
continue
}
if pass, err := fS.Pass(ctx, tnt, opt.FilterIDs, evDP); err != nil { // check if the filter is passing for the DataProvider and return the option if it does
@@ -234,7 +235,7 @@ func GetInterfaceOpts(ctx *context.Context, tnt string, ev *utils.CGREvent, fS *
}
evDP := ev.AsDataProvider()
for _, opt := range dynOpts { // iterate through the options
- if !utils.IsSliceMember([]string{utils.EmptyString, utils.MetaAny, tnt}, opt.Tenant) {
+ if !slices.Contains([]string{utils.EmptyString, utils.MetaAny, tnt}, opt.Tenant) {
continue
}
if pass, err := fS.Pass(ctx, tnt, opt.FilterIDs, evDP); err != nil { // check if the filter is passing for the DataProvider and return the option if it does
@@ -261,7 +262,7 @@ func GetIntPointerOpts(ctx *context.Context, tnt string, ev *utils.CGREvent, fS
}
evDP := ev.AsDataProvider()
for _, opt := range dynOpts { // iterate through the options
- if !utils.IsSliceMember([]string{utils.EmptyString, utils.MetaAny, tnt}, opt.Tenant) {
+ if !slices.Contains([]string{utils.EmptyString, utils.MetaAny, tnt}, opt.Tenant) {
continue
}
if pass, err := fS.Pass(ctx, tnt, opt.FilterIDs, evDP); err != nil { // check if the filter is passing for the DataProvider and return the option if it does
@@ -294,7 +295,7 @@ func GetDurationPointerOptsFromMultipleMaps(ctx *context.Context, tnt string, ev
utils.MetaReq: eventStart,
}
for _, opt := range dynOpts { // iterate through the options
- if !utils.IsSliceMember([]string{utils.EmptyString, utils.MetaAny, tnt}, opt.Tenant) {
+ if !slices.Contains([]string{utils.EmptyString, utils.MetaAny, tnt}, opt.Tenant) {
continue
}
if pass, err := fS.Pass(ctx, tnt, opt.FilterIDs, evMS); err != nil { // check if the filter is passing for the DataProvider and return the option if it does
@@ -327,7 +328,7 @@ func GetDurationOptsFromMultipleMaps(ctx *context.Context, tnt string, eventStar
utils.MetaReq: eventStart,
}
for _, opt := range dynOpts { // iterate through the options
- if !utils.IsSliceMember([]string{utils.EmptyString, utils.MetaAny, tnt}, opt.Tenant) {
+ if !slices.Contains([]string{utils.EmptyString, utils.MetaAny, tnt}, opt.Tenant) {
continue
}
if pass, err := fS.Pass(ctx, tnt, opt.FilterIDs, evMS); err != nil { // check if the filter is passing for the DataProvider and return the option if it does
diff --git a/engine/libindex_health.go b/engine/libindex_health.go
index 6ef4d5382..f14171d03 100644
--- a/engine/libindex_health.go
+++ b/engine/libindex_health.go
@@ -20,6 +20,7 @@ package engine
import (
"fmt"
+ "slices"
"strings"
"time"
@@ -482,7 +483,7 @@ func getRevFltrIdxHealthFromReverse(ctx *context.Context, dm *DataManager, fltrC
}
return
}
- if !utils.IsSliceMember(filterIDs, fltrID) { // check the filters
+ if !slices.Contains(filterIDs, fltrID) { // check the filters
key := utils.ConcatenatedKey(tnt, id)
rply[indxType].BrokenReverseIndexes[key] = append(rply[indxType].BrokenReverseIndexes[key], fltrID)
}
diff --git a/engine/libindex_test.go b/engine/libindex_test.go
index 11551f617..684a05fa7 100644
--- a/engine/libindex_test.go
+++ b/engine/libindex_test.go
@@ -20,6 +20,7 @@ package engine
import (
"reflect"
+ "slices"
"testing"
"time"
@@ -78,7 +79,7 @@ func TestComputeIndexes(t *testing.T) {
if e != nil {
return nil, e
}
- return utils.SliceStringPointer(utils.CloneStringSlice(th.FilterIDs)), nil
+ return utils.SliceStringPointer(slices.Clone(th.FilterIDs)), nil
}, nil)
if err != nil {
t.Error(err)
@@ -116,7 +117,7 @@ func TestComputeIndexesIDsNotNil(t *testing.T) {
if e != nil {
return nil, e
}
- return utils.SliceStringPointer(utils.CloneStringSlice(th.FilterIDs)), nil
+ return utils.SliceStringPointer(slices.Clone(th.FilterIDs)), nil
}, nil)
if err != utils.ErrNotFound {
t.Errorf("Expected %v\n but received %v", utils.ErrNotFound, err)
@@ -3035,7 +3036,7 @@ func TestComputeIndexesNilFilterIDs(t *testing.T) {
if e != nil {
return nil, e
}
- return utils.SliceStringPointer(utils.CloneStringSlice(th.FilterIDs)), nil
+ return utils.SliceStringPointer(slices.Clone(th.FilterIDs)), nil
}, nil)
if err != nil {
t.Error(err)
@@ -3089,7 +3090,7 @@ func TestComputeIndexesNewFilterIndexErr(t *testing.T) {
_, err := ComputeIndexes(context.Background(), dm, "cgrates.org", utils.EmptyString, utils.CacheThresholdFilterIndexes,
&[]string{"THD_2"}, utils.NonTransactional, func(tnt, id, grp string) (*[]string, error) {
- return utils.SliceStringPointer(utils.CloneStringSlice(thd.FilterIDs)), nil
+ return utils.SliceStringPointer(slices.Clone(thd.FilterIDs)), nil
}, nil)
if err != utils.ErrNotImplemented {
t.Errorf("\nExpected error <%+v>, \nReceived error <%+v>", utils.ErrNotImplemented, err)
diff --git a/engine/libtest.go b/engine/libtest.go
index fe15f5dc4..39db10c55 100644
--- a/engine/libtest.go
+++ b/engine/libtest.go
@@ -26,6 +26,7 @@ import (
"os"
"os/exec"
"path"
+ "slices"
"strings"
"time"
@@ -199,7 +200,7 @@ func InitStorDB(cfg *config.CGRConfig) error {
dbPath)); err != nil {
return err
}
- if utils.IsSliceMember([]string{utils.MetaMongo, utils.MetaMySQL, utils.MetaPostgres},
+ if slices.Contains([]string{utils.MetaMongo, utils.MetaMySQL, utils.MetaPostgres},
cfg.StorDbCfg().Type) {
if err := SetDBVersions(storDB); err != nil {
return err
diff --git a/engine/model_helpers.go b/engine/model_helpers.go
index 6c544aab9..be7868230 100644
--- a/engine/model_helpers.go
+++ b/engine/model_helpers.go
@@ -22,6 +22,7 @@ import (
"fmt"
"reflect"
"regexp"
+ "slices"
"strconv"
"strings"
"time"
@@ -1605,7 +1606,7 @@ func DispatcherProfileToAPI(dpp *DispatcherProfile) (tpDPP *utils.TPDispatcherPr
for i, host := range dpp.Hosts {
tpDPP.Hosts[i] = &utils.TPDispatcherHostProfile{
ID: host.ID,
- FilterIDs: utils.CloneStringSlice(host.FilterIDs),
+ FilterIDs: slices.Clone(host.FilterIDs),
Weight: host.Weight,
Params: make([]any, len(host.Params)),
Blocker: host.Blocker,
diff --git a/engine/route_cost_sort.go b/engine/route_cost_sort.go
index 0e9698196..4f4f52154 100644
--- a/engine/route_cost_sort.go
+++ b/engine/route_cost_sort.go
@@ -20,6 +20,7 @@ package engine
import (
"fmt"
+ "slices"
"github.com/cgrates/birpc/context"
"github.com/ericlagergren/decimal"
@@ -65,7 +66,7 @@ func populateCostForRoutes(ctx *context.Context, cfg *config.CGRConfig, connMgr
if len(route.AccountIDs) != 0 { // query AccountS for cost
var acntCost utils.EventCharges
- ev.APIOpts[utils.OptsAccountsProfileIDs] = utils.CloneStringSlice(route.AccountIDs)
+ ev.APIOpts[utils.OptsAccountsProfileIDs] = slices.Clone(route.AccountIDs)
if err = connMgr.Call(ctx, cfg.RouteSCfg().AccountSConns,
utils.AccountSv1MaxAbstracts, ev, &acntCost); err != nil {
if extraOpts.ignoreErrors {
@@ -90,7 +91,7 @@ func populateCostForRoutes(ctx *context.Context, cfg *config.CGRConfig, connMgr
}
srtRoute.SortingData[utils.AccountIDs] = acntIDs
} else { // query RateS for cost
- ev.APIOpts[utils.OptsRatesProfileIDs] = utils.CloneStringSlice(route.RateProfileIDs)
+ ev.APIOpts[utils.OptsRatesProfileIDs] = slices.Clone(route.RateProfileIDs)
var rpCost utils.RateProfileCost
if err = connMgr.Call(ctx, cfg.RouteSCfg().RateSConns,
utils.RateSv1CostForEvent, ev, &rpCost); err != nil {
diff --git a/engine/statmetrics.go b/engine/statmetrics.go
index d4db0fc93..4fc7d2833 100644
--- a/engine/statmetrics.go
+++ b/engine/statmetrics.go
@@ -20,6 +20,7 @@ package engine
import (
"fmt"
+ "slices"
"strconv"
"strings"
@@ -457,7 +458,7 @@ func (ddc *StatDDC) Clone() StatMetric {
Count: ddc.Count,
Events: make(map[string]map[string]uint64),
MinItems: ddc.MinItems,
- FilterIDs: utils.CloneStringSlice(ddc.FilterIDs),
+ FilterIDs: slices.Clone(ddc.FilterIDs),
}
for k, v := range ddc.Events {
cln.Events[k] = make(map[string]uint64)
@@ -606,7 +607,7 @@ func (sum *Metric) Clone() (cln *Metric) {
Count: sum.Count,
Events: make(map[string]*DecimalWithCompress),
MinItems: sum.MinItems,
- FilterIDs: utils.CloneStringSlice(sum.FilterIDs),
+ FilterIDs: slices.Clone(sum.FilterIDs),
}
for k, v := range sum.Events {
cln.Events[k] = &(*v)
@@ -836,7 +837,7 @@ func (dst *StatDistinct) Clone() StatMetric {
MinItems: dst.MinItems,
FieldName: dst.FieldName,
FieldValues: make(map[string]utils.StringSet),
- FilterIDs: utils.CloneStringSlice(dst.FilterIDs),
+ FilterIDs: slices.Clone(dst.FilterIDs),
}
for k, v := range dst.Events {
cln.Events[k] = make(map[string]uint64)
diff --git a/engine/z_attributes_test.go b/engine/z_attributes_test.go
index 5c6f98dbe..1f9ecb358 100644
--- a/engine/z_attributes_test.go
+++ b/engine/z_attributes_test.go
@@ -3773,7 +3773,9 @@ func TestAttributesV1ProcessEvent(t *testing.T) {
if err != nil {
t.Errorf("\nExpected <%+v>, \nReceived <%+v>", nil, err)
}
- if !reflect.DeepEqual(expected, rply) {
+ if sort.Slice(rply.AlteredFields[0].Fields, func(i, j int) bool {
+ return rply.AlteredFields[0].Fields[i] < rply.AlteredFields[0].Fields[j]
+ }); !reflect.DeepEqual(expected, rply) {
t.Errorf("\nExpected <%+v>, \nReceived <%+v>", utils.ToJSON(expected), utils.ToJSON(rply))
}
}
diff --git a/ers/ers.go b/ers/ers.go
index d8acdf119..94c871169 100644
--- a/ers/ers.go
+++ b/ers/ers.go
@@ -24,6 +24,7 @@ import (
"fmt"
"os"
"path"
+ "slices"
"sort"
"strings"
"sync"
@@ -291,7 +292,7 @@ func (erS *ERService) processPartialEvent(ev *utils.CGREvent, rdrCfg *config.Eve
erS.cfg.GeneralCfg().RSRSep); err != nil {
return
}
- if partial := cgrEv.APIOpts[utils.PartialOpt]; !utils.IsSliceMember([]string{utils.FalseStr, utils.EmptyString},
+ if partial := cgrEv.APIOpts[utils.PartialOpt]; !slices.Contains([]string{utils.FalseStr, utils.EmptyString},
utils.IfaceAsString(partial)) { // if is still partial set it back in cache
erS.partialCache.Set(originID, cgrEvs, nil)
return
diff --git a/loaders/libloader.go b/loaders/libloader.go
index 249db82fb..dea17399c 100644
--- a/loaders/libloader.go
+++ b/loaders/libloader.go
@@ -20,6 +20,7 @@ package loaders
import (
"fmt"
+ "slices"
"strings"
"github.com/cgrates/birpc/context"
@@ -161,7 +162,7 @@ func (ar *record) SetFields(ctx *context.Context, tmpls []*config.FCTemplate, fi
return
} else if fullPath == nil { // no dynamic path
fullPath = &utils.FullPath{
- PathSlice: utils.CloneStringSlice(fld.GetPathSlice()), // need to clone so me do not modify the template
+ PathSlice: slices.Clone(fld.GetPathSlice()), // need to clone so me do not modify the template
Path: fld.Path,
}
}
@@ -205,7 +206,7 @@ func (ar *record) Remove(fullPath *utils.FullPath) error {
Path: fullPath.Path,
})*/
case utils.MetaTmp:
- return ar.tmp.Remove(utils.CloneStringSlice(fullPath.PathSlice[1:]))
+ return ar.tmp.Remove(slices.Clone(fullPath.PathSlice[1:]))
case utils.MetaUCH:
ar.cache.Remove(fullPath.Path[5:])
}
diff --git a/sessions/libsessions.go b/sessions/libsessions.go
index 479903e0c..0c529bd3e 100644
--- a/sessions/libsessions.go
+++ b/sessions/libsessions.go
@@ -20,6 +20,7 @@ package sessions
import (
"errors"
+ "slices"
"strings"
"time"
@@ -184,10 +185,10 @@ func (pi *ProcessedStirIdentity) VerifyPayload(originatorTn, originatorURI, dest
return errors.New("wrong originatorTn")
}
if destinationURI != utils.EmptyString {
- if !utils.SliceHasMember(pi.Payload.Dest.URI, destinationURI) {
+ if !slices.Contains(pi.Payload.Dest.URI, destinationURI) {
return errors.New("wrong destinationURI")
}
- } else if !utils.SliceHasMember(pi.Payload.Dest.Tn, destinationTn) {
+ } else if !slices.Contains(pi.Payload.Dest.Tn, destinationTn) {
return errors.New("wrong destinationTn")
}
return
diff --git a/sessions/sessions.go b/sessions/sessions.go
index 9dfd92e9d..16e7fe3de 100644
--- a/sessions/sessions.go
+++ b/sessions/sessions.go
@@ -23,6 +23,7 @@ import (
"fmt"
"math/rand"
"runtime"
+ "slices"
"strings"
"sync"
"time"
@@ -1402,7 +1403,7 @@ func (sS *SessionS) chargeEvent(ctx *context.Context, cgrEv *utils.CGREvent, for
}
ev := engine.MapEvent(cgrEv.Event)
usage := maxUsage
- if utils.SliceHasMember(utils.PostPaidRatedSlice, ev.GetStringIgnoreErrors(utils.RequestType)) {
+ if slices.Contains(utils.PostPaidRatedSlice, ev.GetStringIgnoreErrors(utils.RequestType)) {
usage = ev.GetDurationIgnoreErrors(utils.Usage)
}
//in case of postpaid and rated maxUsage = usage from event
diff --git a/utils/account.go b/utils/account.go
index a0693407f..d7373fa32 100644
--- a/utils/account.go
+++ b/utils/account.go
@@ -20,6 +20,7 @@ package utils
import (
"fmt"
+ "slices"
"sort"
"strconv"
"strings"
@@ -244,7 +245,7 @@ func (cI *CostIncrement) Clone() (cIcln *CostIncrement) {
func (uF *UnitFactor) Clone() *UnitFactor {
cln := new(UnitFactor)
if uF.FilterIDs != nil {
- cln.FilterIDs = CloneStringSlice(uF.FilterIDs)
+ cln.FilterIDs = slices.Clone(uF.FilterIDs)
}
if uF.Factor != nil {
cln.Factor = uF.Factor.Clone()
diff --git a/utils/coreutils.go b/utils/coreutils.go
index 6ac2b3bec..84b84587b 100644
--- a/utils/coreutils.go
+++ b/utils/coreutils.go
@@ -35,6 +35,7 @@ import (
"os"
"path/filepath"
"regexp"
+ "slices"
"strconv"
"strings"
"sync"
@@ -644,7 +645,7 @@ func (h HierarchyPath) Clone() (cln HierarchyPath) {
if h == nil {
return
}
- return CloneStringSlice(h)
+ return slices.Clone(h)
}
// Mask a number of characters in the suffix of the destination
diff --git a/utils/eventcharges.go b/utils/eventcharges.go
index ce339d0a7..a65cb43ea 100644
--- a/utils/eventcharges.go
+++ b/utils/eventcharges.go
@@ -18,6 +18,8 @@ along with this program. If not, see
package utils
+import "slices"
+
// NewEventChargers instantiates the EventChargers in a central place
func NewEventCharges() (ec *EventCharges) {
ec = &EventCharges{
@@ -330,10 +332,10 @@ func (ac *AccountCharge) Clone() *AccountCharge {
cln.BalanceLimit = ac.BalanceLimit.Clone()
}
if ac.AttributeIDs != nil {
- cln.AttributeIDs = CloneStringSlice(ac.AttributeIDs)
+ cln.AttributeIDs = slices.Clone(ac.AttributeIDs)
}
if ac.JoinedChargeIDs != nil {
- cln.JoinedChargeIDs = CloneStringSlice(ac.JoinedChargeIDs)
+ cln.JoinedChargeIDs = slices.Clone(ac.JoinedChargeIDs)
}
return cln
}
diff --git a/utils/libdynamics.go b/utils/libdynamics.go
index 93ba74b5a..cd5839499 100644
--- a/utils/libdynamics.go
+++ b/utils/libdynamics.go
@@ -18,6 +18,7 @@ along with this program. If not, see
package utils
import (
+ "slices"
"time"
"github.com/ericlagergren/decimal"
@@ -88,7 +89,7 @@ func CloneDynamicStringSliceOpt(in []*DynamicStringSliceOpt) (cl []*DynamicStrin
for i, val := range in {
cl[i] = &DynamicStringSliceOpt{
Tenant: val.Tenant,
- FilterIDs: CloneStringSlice(val.FilterIDs),
+ FilterIDs: slices.Clone(val.FilterIDs),
Value: val.Value,
}
}
@@ -100,7 +101,7 @@ func CloneDynamicStringOpt(in []*DynamicStringOpt) (cl []*DynamicStringOpt) {
for i, val := range in {
cl[i] = &DynamicStringOpt{
Tenant: val.Tenant,
- FilterIDs: CloneStringSlice(val.FilterIDs),
+ FilterIDs: slices.Clone(val.FilterIDs),
Value: val.Value,
}
}
@@ -112,7 +113,7 @@ func CloneDynamicInterfaceOpt(in []*DynamicInterfaceOpt) (cl []*DynamicInterface
for i, val := range in {
cl[i] = &DynamicInterfaceOpt{
Tenant: val.Tenant,
- FilterIDs: CloneStringSlice(val.FilterIDs),
+ FilterIDs: slices.Clone(val.FilterIDs),
Value: val.Value,
}
}
@@ -124,7 +125,7 @@ func CloneDynamicBoolOpt(in []*DynamicBoolOpt) (cl []*DynamicBoolOpt) {
for i, val := range in {
cl[i] = &DynamicBoolOpt{
Tenant: val.Tenant,
- FilterIDs: CloneStringSlice(val.FilterIDs),
+ FilterIDs: slices.Clone(val.FilterIDs),
Value: val.Value,
}
}
@@ -136,7 +137,7 @@ func CloneDynamicIntOpt(in []*DynamicIntOpt) (cl []*DynamicIntOpt) {
for i, val := range in {
cl[i] = &DynamicIntOpt{
Tenant: val.Tenant,
- FilterIDs: CloneStringSlice(val.FilterIDs),
+ FilterIDs: slices.Clone(val.FilterIDs),
Value: val.Value,
}
}
@@ -148,7 +149,7 @@ func CloneDynamicFloat64Opt(in []*DynamicFloat64Opt) (cl []*DynamicFloat64Opt) {
for i, val := range in {
cl[i] = &DynamicFloat64Opt{
Tenant: val.Tenant,
- FilterIDs: CloneStringSlice(val.FilterIDs),
+ FilterIDs: slices.Clone(val.FilterIDs),
Value: val.Value,
}
}
@@ -160,7 +161,7 @@ func CloneDynamicDurationOpt(in []*DynamicDurationOpt) (cl []*DynamicDurationOpt
for i, val := range in {
cl[i] = &DynamicDurationOpt{
Tenant: val.Tenant,
- FilterIDs: CloneStringSlice(val.FilterIDs),
+ FilterIDs: slices.Clone(val.FilterIDs),
Value: val.Value,
}
}
@@ -172,7 +173,7 @@ func CloneDynamicDecimalBigOpt(in []*DynamicDecimalBigOpt) (cl []*DynamicDecimal
for i, val := range in {
cl[i] = &DynamicDecimalBigOpt{
Tenant: val.Tenant,
- FilterIDs: CloneStringSlice(val.FilterIDs),
+ FilterIDs: slices.Clone(val.FilterIDs),
Value: CloneDecimalBig(val.Value),
}
}
@@ -184,7 +185,7 @@ func CloneDynamicIntPointerOpt(in []*DynamicIntPointerOpt) (cl []*DynamicIntPoin
for i, val := range in {
cl[i] = &DynamicIntPointerOpt{
Tenant: val.Tenant,
- FilterIDs: CloneStringSlice(val.FilterIDs),
+ FilterIDs: slices.Clone(val.FilterIDs),
Value: IntPointer(*val.Value),
}
}
@@ -196,7 +197,7 @@ func CloneDynamicDurationPointerOpt(in []*DynamicDurationPointerOpt) (cl []*Dyna
for i, val := range in {
cl[i] = &DynamicDurationPointerOpt{
Tenant: val.Tenant,
- FilterIDs: CloneStringSlice(val.FilterIDs),
+ FilterIDs: slices.Clone(val.FilterIDs),
Value: DurationPointer(*val.Value),
}
}
@@ -211,10 +212,10 @@ func DynamicStringSliceOptEqual(v1, v2 []*DynamicStringSliceOpt) bool {
if v1[i].Tenant != v2[i].Tenant {
return false
}
- if !SliceStringEqual(v1[i].FilterIDs, v2[i].FilterIDs) {
+ if !slices.Equal(v1[i].FilterIDs, v2[i].FilterIDs) {
return false
}
- if !SliceStringEqual(v1[i].Value, v2[i].Value) {
+ if !slices.Equal(v1[i].Value, v2[i].Value) {
return false
}
}
@@ -229,7 +230,7 @@ func DynamicStringOptEqual(v1, v2 []*DynamicStringOpt) bool {
if v1[i].Tenant != v2[i].Tenant {
return false
}
- if !SliceStringEqual(v1[i].FilterIDs, v2[i].FilterIDs) {
+ if !slices.Equal(v1[i].FilterIDs, v2[i].FilterIDs) {
return false
}
if v1[i].Value != v2[i].Value {
@@ -247,7 +248,7 @@ func DynamicBoolOptEqual(v1, v2 []*DynamicBoolOpt) bool {
if v1[i].Tenant != v2[i].Tenant {
return false
}
- if !SliceStringEqual(v1[i].FilterIDs, v2[i].FilterIDs) {
+ if !slices.Equal(v1[i].FilterIDs, v2[i].FilterIDs) {
return false
}
if v1[i].Value != v2[i].Value {
@@ -265,7 +266,7 @@ func DynamicIntOptEqual(v1, v2 []*DynamicIntOpt) bool {
if v1[i].Tenant != v2[i].Tenant {
return false
}
- if !SliceStringEqual(v1[i].FilterIDs, v2[i].FilterIDs) {
+ if !slices.Equal(v1[i].FilterIDs, v2[i].FilterIDs) {
return false
}
if v1[i].Value != v2[i].Value {
@@ -283,7 +284,7 @@ func DynamicFloat64OptEqual(v1, v2 []*DynamicFloat64Opt) bool {
if v1[i].Tenant != v2[i].Tenant {
return false
}
- if !SliceStringEqual(v1[i].FilterIDs, v2[i].FilterIDs) {
+ if !slices.Equal(v1[i].FilterIDs, v2[i].FilterIDs) {
return false
}
if v1[i].Value != v2[i].Value {
@@ -301,7 +302,7 @@ func DynamicDurationOptEqual(v1, v2 []*DynamicDurationOpt) bool {
if v1[i].Tenant != v2[i].Tenant {
return false
}
- if !SliceStringEqual(v1[i].FilterIDs, v2[i].FilterIDs) {
+ if !slices.Equal(v1[i].FilterIDs, v2[i].FilterIDs) {
return false
}
if v1[i].Value != v2[i].Value {
@@ -319,7 +320,7 @@ func DynamicDecimalBigOptEqual(v1, v2 []*DynamicDecimalBigOpt) bool {
if v1[i].Tenant != v2[i].Tenant {
return false
}
- if !SliceStringEqual(v1[i].FilterIDs, v2[i].FilterIDs) ||
+ if !slices.Equal(v1[i].FilterIDs, v2[i].FilterIDs) ||
v1[i].Value.Cmp(v2[i].Value) != 0 {
return false
}
@@ -335,7 +336,7 @@ func DynamicInterfaceOptEqual(v1, v2 []*DynamicInterfaceOpt) bool {
if v1[i].Tenant != v2[i].Tenant {
return false
}
- if !SliceStringEqual(v1[i].FilterIDs, v2[i].FilterIDs) {
+ if !slices.Equal(v1[i].FilterIDs, v2[i].FilterIDs) {
return false
}
if v1[i].Value != v2[i].Value {
@@ -353,7 +354,7 @@ func DynamicIntPointerOptEqual(v1, v2 []*DynamicIntPointerOpt) bool {
if v1[i].Tenant != v2[i].Tenant {
return false
}
- if !SliceStringEqual(v1[i].FilterIDs, v2[i].FilterIDs) {
+ if !slices.Equal(v1[i].FilterIDs, v2[i].FilterIDs) {
return false
}
if *v1[i].Value != *v2[i].Value {
@@ -371,7 +372,7 @@ func DynamicDurationPointerOptEqual(v1, v2 []*DynamicDurationPointerOpt) bool {
if v1[i].Tenant != v2[i].Tenant {
return false
}
- if !SliceStringEqual(v1[i].FilterIDs, v2[i].FilterIDs) {
+ if !slices.Equal(v1[i].FilterIDs, v2[i].FilterIDs) {
return false
}
if *v1[i].Value != *v2[i].Value {
diff --git a/utils/map.go b/utils/map.go
index 36429aed1..235906b8b 100644
--- a/utils/map.go
+++ b/utils/map.go
@@ -19,6 +19,7 @@ along with this program. If not, see
package utils
import (
+ "slices"
"strconv"
"strings"
)
@@ -105,7 +106,7 @@ func (fWp FlagParams) Clone() (cln FlagParams) {
for flg, params := range fWp {
var cprm []string
if params != nil {
- cprm = CloneStringSlice(params)
+ cprm = slices.Clone(params)
}
cln[flg] = cprm
}
diff --git a/utils/orderednavigablemap.go b/utils/orderednavigablemap.go
index 1c7a022b8..f1b6eb3df 100644
--- a/utils/orderednavigablemap.go
+++ b/utils/orderednavigablemap.go
@@ -19,6 +19,7 @@ along with this program. If not, see
package utils
import (
+ "slices"
"strconv"
"strings"
)
@@ -85,7 +86,7 @@ func (onm *OrderedNavigableMap) Remove(fullPath *FullPath) (err error) {
if fullPath.Path == EmptyString {
return ErrWrongPath
}
- // fullPath.PathSlice = CloneStringSlice(fullPath.PathSlice) // clone the items to not modify the templates
+ // fullPath.PathSlice = slices.Clone(fullPath.PathSlice) // clone the items to not modify the templates
if err = onm.nm.Remove(fullPath.PathSlice); err != nil { // remove them from DataNode
return
}
@@ -130,7 +131,7 @@ func (onm *OrderedNavigableMap) SetAsSlice(fullPath *FullPath, vals []*DataNode)
pathItmsSet := make([][]string, len(vals)) // prepare the path for order update
for i := range vals {
- pathItmsSet[i] = append(CloneStringSlice(fullPath.PathSlice), strconv.Itoa(i)) // clone the slice as we will append an index
+ pathItmsSet[i] = append(slices.Clone(fullPath.PathSlice), strconv.Itoa(i)) // clone the slice as we will append an index
}
path := stripIdxFromLastPathElm(fullPath.Path)
if !addedNew { // cleanup old references since the value is being overwritten
@@ -204,7 +205,7 @@ func (onm *OrderedNavigableMap) Append(fullPath *FullPath, val *DataLeaf) (err e
// add the path to order
onm.orderRef[fullPath.Path] = append(onm.orderRef[fullPath.Path],
onm.orderIdx.PushBack(
- append(CloneStringSlice(fullPath.PathSlice), // clone the slice as we will append an index
+ append(slices.Clone(fullPath.PathSlice), // clone the slice as we will append an index
strconv.Itoa(idx))))
return
}
@@ -222,7 +223,7 @@ func (onm *OrderedNavigableMap) Compose(fullPath *FullPath, val *DataLeaf) (err
if _, hasRef := onm.orderRef[fullPath.Path]; !hasRef { // the element is new so append to order
onm.orderRef[fullPath.Path] = append(onm.orderRef[fullPath.Path],
onm.orderIdx.PushBack(
- append(CloneStringSlice(fullPath.PathSlice), // clone the slice as we will append an index
+ append(slices.Clone(fullPath.PathSlice), // clone the slice as we will append an index
"0")))
} else { // move element in the back of order list
onm.orderIdx.MoveToBack(onm.orderRef[fullPath.Path][len(onm.orderRef[fullPath.Path])-1])
diff --git a/utils/slice.go b/utils/slice.go
index fd0612c96..c250eb8ac 100644
--- a/utils/slice.go
+++ b/utils/slice.go
@@ -19,23 +19,9 @@ along with this program. If not, see
package utils
import (
- "sort"
"strings"
)
-// Binary string search in slice
-func IsSliceMember(ss []string, s string) bool {
- sort.Strings(ss)
- return SliceHasMember(ss, s)
-}
-
-// SliceHasMember searches within a *sorted* slice
-// useful to search in shared vars (no slice sort)
-func SliceHasMember(ss []string, s string) bool {
- i := sort.SearchStrings(ss, s)
- return i < len(ss) && ss[i] == s
-}
-
// PrefixSliceItems iterates through slice and add a prefix before every element
func PrefixSliceItems(prfx string, slc []string) (out []string) {
out = make([]string, 0, len(slc))
@@ -56,13 +42,6 @@ func SliceStringToIface(slc []string) (ifc []any) {
return
}
-// Float64SliceHasMember searches within a *sorted* slice
-// useful to search in shared vars (no slice sort)
-func Float64SliceHasMember(ss []float64, s float64) bool {
- i := sort.SearchFloat64s(ss, s)
- return i < len(ss) && ss[i] == s
-}
-
// HasPrefixSlice iterates over slice members and returns true if one the element has that prefix
func HasPrefixSlice(prfxs []string, el string) bool {
for _, prfx := range prfxs {
@@ -72,23 +51,3 @@ func HasPrefixSlice(prfxs []string, el string) bool {
}
return false
}
-
-func CloneStringSlice(in []string) (cl []string) {
- if in != nil {
- cl = make([]string, len(in))
- copy(cl, in)
- }
- return
-}
-
-func SliceStringEqual(v1, v2 []string) bool {
- if len(v1) != len(v2) {
- return false
- }
- for i := range v1 {
- if v1[i] != v2[i] {
- return false
- }
- }
- return true
-}
diff --git a/utils/slice_test.go b/utils/slice_test.go
index 2fee66584..5a322baf4 100644
--- a/utils/slice_test.go
+++ b/utils/slice_test.go
@@ -23,33 +23,6 @@ import (
"testing"
)
-func TestIsSliceMember(t *testing.T) {
- if !IsSliceMember([]string{"1", "2", "3", "4", "5"}, "5") {
- t.Error("Expecting: true, received: false")
- }
- if IsSliceMember([]string{"1", "2", "3", "4", "5"}, "6") {
- t.Error("Expecting: true, received: false")
- }
-}
-
-func TestSliceHasMember(t *testing.T) {
- if !SliceHasMember([]string{"1", "2", "3", "4", "5"}, "5") {
- t.Error("Expecting: true, received: false")
- }
- if SliceHasMember([]string{"1", "2", "3", "4", "5"}, "6") {
- t.Error("Expecting: true, received: false")
- }
-}
-
-func TestFlaot64SliceHasMember(t *testing.T) {
- if !Float64SliceHasMember([]float64{1, 2, 3, 4, 5}, 5) {
- t.Error("Expecting: true, received: false")
- }
- if Float64SliceHasMember([]float64{1, 2, 3, 4, 5}, 6) {
- t.Error("Expecting: true, received: false")
- }
-}
-
func TestHasPrefixSlice(t *testing.T) {
if !HasPrefixSlice([]string{"1", "2", "3", "4", "5"}, "123") {
t.Error("Expecting: true, received: false")
@@ -74,23 +47,3 @@ func TestSliceStringToIface(t *testing.T) {
t.Errorf("Expected: %s ,received: %s", ToJSON(exp), ToJSON(rply))
}
}
-
-func TestSliceStringEqual(t *testing.T) {
- v1 := []string{"*V1field1", "*V1field2"}
- v2 := []string{"*V2field1"}
-
- //When the length don't match
- if rcv := SliceStringEqual(v1, v2); rcv {
- t.Error("The length should not match")
- }
-
- v2 = append(v2, "*V2field2")
- if rcv := SliceStringEqual(v1, v2); rcv {
- t.Error("The values should not match")
- }
-
- v2 = v1
- if rcv := SliceStringEqual(v1, v2); !rcv {
- t.Error("The slices should match")
- }
-}