mirror of
https://github.com/cgrates/cgrates.git
synced 2026-02-11 18:16:24 +05:00
shared group fixes
This commit is contained in:
@@ -144,12 +144,13 @@ CREATE TABLE `tp_actions` (
|
||||
`expiry_time` varchar(24) NOT NULL,
|
||||
`destination_tag` varchar(64) NOT NULL,
|
||||
`rating_subject` varchar(64) NOT NULL,
|
||||
`shared_group` varchar(64) NOT NULL,
|
||||
`balance_weight` double(8,2) NOT NULL,
|
||||
`extra_parameters` varchar(256) NOT NULL,
|
||||
`weight` double(8,2) NOT NULL,
|
||||
PRIMARY KEY (`id`),
|
||||
KEY `tpid` (`tpid`),
|
||||
UNIQUE KEY `unique_action` (`tpid`,`tag`,`action`,`balance_type`,`direction`,`expiry_time`,`destination_tag`,`balance_weight`,`weight`)
|
||||
UNIQUE KEY `unique_action` (`tpid`,`tag`,`action`,`balance_type`,`direction`,`expiry_time`,`destination_tag`,`shared_group`,`balance_weight`,`weight`)
|
||||
);
|
||||
|
||||
--
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
#ActionsTag,Action,BalanceType,Direction,Units,ExpiryTime,DestinationTag,RatingSubject,BalanceWeight,ExtraParameters,Weight
|
||||
PREPAID_10,*topup_reset,*monetary,*out,10,*unlimited,*any,,10,,10
|
||||
#ActionsTag,Action,BalanceType,Direction,Units,ExpiryTime,DestinationTag,RatingSubject,SharedGroup,BalanceWeight,ExtraParameters,Weight
|
||||
PREPAID_10,*topup_reset,*monetary,*out,10,*unlimited,*any,,,10,,10
|
||||
#WARN_HTTP,*call_url,,,,,,,,http://localhost:8000,10
|
||||
#LOG_BALANCE,*log,,,,,,,,,10
|
||||
|
||||
|
@@ -1,3 +1,3 @@
|
||||
#ActionsTag,Action,BalanceType,Direction,Units,ExpiryTime,DestinationTag,RatingSubject,BalanceWeight,ExtraParameters,Weight
|
||||
PREPAID_10,*topup_reset,*monetary,*out,10,*unlimited,*any,,10,,10
|
||||
#ActionsTag,Action,BalanceType,Direction,Units,ExpiryTime,DestinationTag,RatingSubject,SharedGroup,BalanceWeight,ExtraParameters,Weight
|
||||
PREPAID_10,*topup_reset,*monetary,*out,10,*unlimited,*any,,,10,,10
|
||||
LOG_WARNING,*log,,,,,,,,,10
|
||||
|
||||
|
@@ -1,3 +1,3 @@
|
||||
#ActionsTag,Action,BalanceType,Direction,Units,ExpiryTime,DestinationTag,RatingSubject,BalanceWeight,ExtraParameters,Weight
|
||||
PREPAID_10,*topup_reset,*monetary,*out,10,*unlimited,*any,,10,,10
|
||||
#ActionsTag,Action,BalanceType,Direction,Units,ExpiryTime,DestinationTag,RatingSubject,SharedGroup,BalanceWeight,ExtraParameters,Weight
|
||||
PREPAID_10,*topup_reset,*monetary,*out,10,*unlimited,*any,,,10,,10
|
||||
LOG_WARNING,*log,,,,,,,,,10
|
||||
|
||||
|
@@ -431,6 +431,7 @@ func (dbr *DbReader) LoadActionTimings() (err error) {
|
||||
}
|
||||
for atId, ats := range atsMap {
|
||||
for _, at := range ats {
|
||||
|
||||
_, exists := dbr.actions[at.ActionsId]
|
||||
if !exists {
|
||||
return errors.New(fmt.Sprintf("ActionTiming: Could not load the action for tag: %v", at.ActionsId))
|
||||
|
||||
@@ -58,7 +58,7 @@ DUMMY,INVALID;DATA
|
||||
`
|
||||
|
||||
var actionsSample = `#ActionsTag,Action,BalanceType,Direction,Units,ExpiryTime,DestinationTag,RatingSubject,BalanceWeight,ExtraParameters,Weight
|
||||
PREPAID_10,*topup_reset,*monetary,*out,5,*unlimited,*any,,10,,10
|
||||
PREPAID_10,*topup_reset,*monetary,*out,5,*unlimited,*any,,,10,,10
|
||||
WARN_HTTP,*call_url,,,,,,,,http://localhost:8000,10
|
||||
LOG_BALANCE,*log,,,,,,,,,10
|
||||
DUMMY,INVALID;DATA
|
||||
|
||||
@@ -310,20 +310,20 @@ func (self *SQLStorage) SetTPActions(tpid string, acts map[string][]*utils.TPAct
|
||||
return nil //Nothing to set
|
||||
}
|
||||
var buffer bytes.Buffer
|
||||
buffer.WriteString(fmt.Sprintf("INSERT INTO %s (tpid,tag,action,balance_type,direction,units,expiry_time,destination_tag,rating_subject,balance_weight,extra_parameters,weight) VALUES ", utils.TBL_TP_ACTIONS))
|
||||
buffer.WriteString(fmt.Sprintf("INSERT INTO %s (tpid,tag,action,balance_type,direction,units,expiry_time,destination_tag,rating_subject,shared_group,balance_weight,extra_parameters,weight) VALUES ", utils.TBL_TP_ACTIONS))
|
||||
i := 0
|
||||
for actId, actRows := range acts {
|
||||
for _, act := range actRows {
|
||||
if i != 0 { //Consecutive values after the first will be prefixed with "," as separator
|
||||
buffer.WriteRune(',')
|
||||
}
|
||||
buffer.WriteString(fmt.Sprintf("('%s','%s','%s','%s','%s',%f,'%s','%s','%s',%f,'%s',%f)",
|
||||
buffer.WriteString(fmt.Sprintf("('%s','%s','%s','%s','%s',%f,'%s','%s','%s','%s',%f,'%s',%f)",
|
||||
tpid, actId, act.Identifier, act.BalanceType, act.Direction, act.Units, act.ExpiryTime,
|
||||
act.DestinationId, act.RatingSubject, act.BalanceWeight, act.ExtraParameters, act.Weight))
|
||||
act.DestinationId, act.RatingSubject, act.BalanceWeight, act.SharedGroup, act.ExtraParameters, act.Weight))
|
||||
i++
|
||||
}
|
||||
}
|
||||
buffer.WriteString(" ON DUPLICATE KEY UPDATE action=values(action),balance_type=values(balance_type),direction=values(direction),units=values(units),expiry_time=values(expiry_time),destination_tag=values(destination_tag),rating_subject=values(rating_subject),balance_weight=values(balance_weight),extra_parameters=values(extra_parameters),weight=values(weight)")
|
||||
buffer.WriteString(" ON DUPLICATE KEY UPDATE action=values(action),balance_type=values(balance_type),direction=values(direction),units=values(units),expiry_time=values(expiry_time),destination_tag=values(destination_tag),rating_subject=values(rating_subject),shared_group=values(shared_group),balance_weight=values(balance_weight),extra_parameters=values(extra_parameters),weight=values(weight)")
|
||||
if _, err := self.Db.Exec(buffer.String()); err != nil {
|
||||
return err
|
||||
}
|
||||
@@ -331,7 +331,7 @@ func (self *SQLStorage) SetTPActions(tpid string, acts map[string][]*utils.TPAct
|
||||
}
|
||||
|
||||
func (self *SQLStorage) GetTPActions(tpid, actsId string) (*utils.TPActions, error) {
|
||||
rows, err := self.Db.Query(fmt.Sprintf("SELECT action,balance_type,direction,units,expiry_time,destination_tag,rating_subject,balance_weight,extra_parameters,weight FROM %s WHERE tpid='%s' AND tag='%s'", utils.TBL_TP_ACTIONS, tpid, actsId))
|
||||
rows, err := self.Db.Query(fmt.Sprintf("SELECT action,balance_type,direction,units,expiry_time,destination_tag,rating_subject,shared_group,balance_weight,extra_parameters,weight FROM %s WHERE tpid='%s' AND tag='%s'", utils.TBL_TP_ACTIONS, tpid, actsId))
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
@@ -340,9 +340,9 @@ func (self *SQLStorage) GetTPActions(tpid, actsId string) (*utils.TPActions, err
|
||||
i := 0
|
||||
for rows.Next() {
|
||||
i++ //Keep here a reference so we know we got at least one result
|
||||
var action, balanceId, dir, destId, rateSubject, expTime, extraParameters string
|
||||
var action, balanceId, dir, destId, rateSubject, sharedGroup, expTime, extraParameters string
|
||||
var units, balanceWeight, weight float64
|
||||
if err = rows.Scan(&action, &balanceId, &dir, &units, &expTime, &destId, &rateSubject, &balanceWeight, &extraParameters, &weight); err != nil {
|
||||
if err = rows.Scan(&action, &balanceId, &dir, &units, &expTime, &destId, &rateSubject, &sharedGroup, &balanceWeight, &extraParameters, &weight); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
acts.Actions = append(acts.Actions, &utils.TPAction{
|
||||
@@ -354,6 +354,7 @@ func (self *SQLStorage) GetTPActions(tpid, actsId string) (*utils.TPActions, err
|
||||
DestinationId: destId,
|
||||
RatingSubject: rateSubject,
|
||||
BalanceWeight: balanceWeight,
|
||||
SharedGroup: sharedGroup,
|
||||
ExtraParameters: extraParameters,
|
||||
Weight: weight})
|
||||
}
|
||||
@@ -923,8 +924,8 @@ func (self *SQLStorage) GetTpActions(tpid, tag string) (map[string][]*utils.TPAc
|
||||
for rows.Next() {
|
||||
var id int
|
||||
var units, balance_weight, weight float64
|
||||
var tpid, tag, action, balance_type, direction, destinations_tag, rating_subject, extra_parameters, expirationDate string
|
||||
if err := rows.Scan(&id, &tpid, &tag, &action, &balance_type, &direction, &units, &expirationDate, &destinations_tag, &rating_subject, &balance_weight, &extra_parameters, &weight); err != nil {
|
||||
var tpid, tag, action, balance_type, direction, destinations_tag, rating_subject, shared_group, extra_parameters, expirationDate string
|
||||
if err := rows.Scan(&id, &tpid, &tag, &action, &balance_type, &direction, &units, &expirationDate, &destinations_tag, &rating_subject, &shared_group, &balance_weight, &extra_parameters, &weight); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
a := &utils.TPAction{
|
||||
@@ -935,6 +936,7 @@ func (self *SQLStorage) GetTpActions(tpid, tag string) (map[string][]*utils.TPAc
|
||||
ExpiryTime: expirationDate,
|
||||
DestinationId: destinations_tag,
|
||||
RatingSubject: rating_subject,
|
||||
SharedGroup: shared_group,
|
||||
BalanceWeight: balance_weight,
|
||||
ExtraParameters: extra_parameters,
|
||||
Weight: weight,
|
||||
|
||||
@@ -46,6 +46,7 @@ var fileHandlers = map[string]func(*TPCSVImporter, string) error{
|
||||
utils.DESTINATION_RATES_CSV: (*TPCSVImporter).importDestinationRates,
|
||||
utils.RATING_PLANS_CSV: (*TPCSVImporter).importRatingPlans,
|
||||
utils.RATING_PROFILES_CSV: (*TPCSVImporter).importRatingProfiles,
|
||||
utils.SHARED_GROUPS_CSV: (*TPCSVImporter).importSharedGroups,
|
||||
utils.ACTIONS_CSV: (*TPCSVImporter).importActions,
|
||||
utils.ACTION_PLANS_CSV: (*TPCSVImporter).importActionTimings,
|
||||
utils.ACTION_TRIGGERS_CSV: (*TPCSVImporter).importActionTriggers,
|
||||
@@ -287,6 +288,10 @@ func (self *TPCSVImporter) importRatingProfiles(fn string) error {
|
||||
return nil
|
||||
}
|
||||
|
||||
func (self *TPCSVImporter) importSharedGroups(fn string) error {
|
||||
return nil
|
||||
}
|
||||
|
||||
func (self *TPCSVImporter) importActions(fn string) error {
|
||||
if self.Verbose {
|
||||
log.Printf("Processing file: <%s> ", fn)
|
||||
@@ -307,7 +312,7 @@ func (self *TPCSVImporter) importActions(fn string) error {
|
||||
}
|
||||
continue
|
||||
}
|
||||
actId, actionType, balanceType, direction, destTag, rateSubject := record[0], record[1], record[2], record[3], record[6], record[7]
|
||||
actId, actionType, balanceType, direction, destTag, rateSubject, sharedGroup := record[0], record[1], record[2], record[3], record[6], record[7], record[8]
|
||||
units, err := strconv.ParseFloat(record[4], 64)
|
||||
if err != nil {
|
||||
if self.Verbose {
|
||||
@@ -315,8 +320,8 @@ func (self *TPCSVImporter) importActions(fn string) error {
|
||||
}
|
||||
continue
|
||||
}
|
||||
balanceWeight, _ := strconv.ParseFloat(record[8], 64)
|
||||
weight, err := strconv.ParseFloat(record[10], 64)
|
||||
balanceWeight, _ := strconv.ParseFloat(record[9], 64)
|
||||
weight, err := strconv.ParseFloat(record[11], 64)
|
||||
if err != nil {
|
||||
if self.Verbose {
|
||||
log.Printf("Ignoring line %d, warning: <%s> ", lineNr, err.Error())
|
||||
@@ -331,8 +336,9 @@ func (self *TPCSVImporter) importActions(fn string) error {
|
||||
ExpiryTime: record[5],
|
||||
DestinationId: destTag,
|
||||
RatingSubject: rateSubject,
|
||||
SharedGroup: sharedGroup,
|
||||
BalanceWeight: balanceWeight,
|
||||
ExtraParameters: record[9],
|
||||
ExtraParameters: record[10],
|
||||
Weight: weight,
|
||||
}
|
||||
if err := self.StorDb.SetTPActions(self.TPid, map[string][]*utils.TPAction{actId: []*utils.TPAction{act}}); err != nil {
|
||||
|
||||
@@ -215,6 +215,7 @@ type TPAction struct {
|
||||
ExpiryTime string // Time when the units will expire
|
||||
DestinationId string // Destination profile id
|
||||
RatingSubject string // Reference a rate subject defined in RatingProfiles
|
||||
SharedGroup string // Reference to a shared group
|
||||
BalanceWeight float64 // Balance weight
|
||||
ExtraParameters string
|
||||
Weight float64 // Action's weight
|
||||
|
||||
Reference in New Issue
Block a user