mirror of
https://github.com/cgrates/cgrates.git
synced 2026-02-15 13:19:53 +05:00
update to fully merge aliases
This commit is contained in:
@@ -202,21 +202,32 @@ func (am *AliasHandler) UpdateAlias(al Alias, reply *string) error {
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
// move old values that were not overwritten into the new alias
|
||||
for _, oldValue := range oldAlias.Values {
|
||||
for _, value := range al.Values {
|
||||
found := false
|
||||
for _, value := range al.Values {
|
||||
if value.DestinationId == "" {
|
||||
value.DestinationId = utils.ANY
|
||||
}
|
||||
for _, oldValue := range oldAlias.Values {
|
||||
if oldValue.DestinationId == value.DestinationId {
|
||||
for target, origAliasMap := range value.Pairs {
|
||||
for orig, alias := range origAliasMap {
|
||||
if oldValue.Pairs[target] == nil {
|
||||
oldValue.Pairs[target] = make(map[string]string)
|
||||
}
|
||||
oldValue.Pairs[target][orig] = alias
|
||||
}
|
||||
}
|
||||
oldValue.Weight = value.Weight
|
||||
found = true
|
||||
break
|
||||
}
|
||||
}
|
||||
if !found {
|
||||
al.Values = append(al.Values, oldValue)
|
||||
oldAlias.Values = append(oldAlias.Values, value)
|
||||
}
|
||||
}
|
||||
|
||||
if err := am.accountingDb.SetAlias(&al); err != nil {
|
||||
if err := am.accountingDb.SetAlias(oldAlias); err != nil {
|
||||
*reply = err.Error()
|
||||
return err
|
||||
} //add to cache
|
||||
|
||||
@@ -96,7 +96,11 @@ func TestAliasesSetters(t *testing.T) {
|
||||
Account: "set",
|
||||
Subject: "set",
|
||||
Context: "*rating",
|
||||
}, r); err != nil || len(r.Values) != 1 || len(r.Values[0].Pairs) != 1 || r.Values[0].Pairs["Subject"]["1234"] != "1235" {
|
||||
}, r); err != nil ||
|
||||
len(r.Values) != 1 ||
|
||||
len(r.Values[0].Pairs) != 2 ||
|
||||
r.Values[0].Pairs["Subject"]["1234"] != "1235" ||
|
||||
r.Values[0].Pairs["Account"]["1234"] != "1235" {
|
||||
t.Errorf("Error getting alias: %+v", r.Values[0])
|
||||
}
|
||||
if err := aliasService.UpdateAlias(Alias{
|
||||
@@ -121,7 +125,7 @@ func TestAliasesSetters(t *testing.T) {
|
||||
Account: "set",
|
||||
Subject: "set",
|
||||
Context: "*rating",
|
||||
}, r); err != nil || len(r.Values) != 1 || len(r.Values[0].Pairs) != 1 || r.Values[0].Pairs["Subject"]["1111"] != "2222" {
|
||||
}, r); err != nil || len(r.Values) != 1 || len(r.Values[0].Pairs) != 2 || r.Values[0].Pairs["Subject"]["1111"] != "2222" {
|
||||
t.Errorf("Error getting alias: %+v", r.Values[0].Pairs["Subject"])
|
||||
}
|
||||
if err := aliasService.UpdateAlias(Alias{
|
||||
@@ -149,10 +153,11 @@ func TestAliasesSetters(t *testing.T) {
|
||||
}, r); err != nil ||
|
||||
len(r.Values) != 2 ||
|
||||
len(r.Values[1].Pairs) != 1 ||
|
||||
r.Values[1].Pairs["Subject"]["1111"] != "2222" ||
|
||||
len(r.Values[0].Pairs) != 1 ||
|
||||
r.Values[0].Pairs["Subject"]["3333"] != "4444" {
|
||||
t.Errorf("Error getting alias: %+v", r.Values)
|
||||
r.Values[1].Pairs["Subject"]["3333"] != "4444" ||
|
||||
len(r.Values[0].Pairs) != 2 ||
|
||||
r.Values[0].Pairs["Subject"]["1111"] != "2222" ||
|
||||
r.Values[0].Pairs["Subject"]["1234"] != "1235" {
|
||||
t.Errorf("Error getting alias: %+v", r.Values[0])
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user