diff --git a/engine/storage_csv.go b/engine/storage_csv.go index 7fe370d6b..482cef00b 100644 --- a/engine/storage_csv.go +++ b/engine/storage_csv.go @@ -62,7 +62,7 @@ func openStringCSVStorage(data string, comma rune, nrFields int) (csvReader *csv return } -func (csvs *CSVStorage) GetTpTimings(string, string) ([]TpTiming, error) { +func (csvs *CSVStorage) GetTpTimings(tpid, tag string) ([]TpTiming, error) { csvReader, fp, err := csvs.readerFunc(csvs.timingsFn, csvs.sep, getColumnCount(TpTiming{})) if err != nil { log.Print("Could not load timings file: ", err) @@ -82,7 +82,9 @@ func (csvs *CSVStorage) GetTpTimings(string, string) ([]TpTiming, error) { log.Print("error loading timing: ", err) return nil, err } else { - tpTimings = append(tpTimings, tpTiming.(TpTiming)) + tm := tpTiming.(TpTiming) + tm.Tpid = tpid + tpTimings = append(tpTimings, tm) } } return tpTimings, nil @@ -108,7 +110,9 @@ func (csvs *CSVStorage) GetTpDestinations(tpid, tag string) ([]TpDestination, er log.Print("error loading destination: ", err) return nil, err } else { - tpDests = append(tpDests, tpDest.(TpDestination)) + d := tpDest.(TpDestination) + d.Tpid = tpid + tpDests = append(tpDests, d) } } return tpDests, nil @@ -134,7 +138,9 @@ func (csvs *CSVStorage) GetTpRates(tpid, tag string) ([]TpRate, error) { log.Print("error loading rate: ", err) return nil, err } else { - tpRates = append(tpRates, tpRate.(TpRate)) + r := tpRate.(TpRate) + r.Tpid = tpid + tpRates = append(tpRates, r) } } return tpRates, nil @@ -160,7 +166,9 @@ func (csvs *CSVStorage) GetTpDestinationRates(tpid, tag string, p *utils.Paginat log.Print("error loading destination rate: ", err) return nil, err } else { - tpDestinationRates = append(tpDestinationRates, tpRate.(TpDestinationRate)) + dr := tpRate.(TpDestinationRate) + dr.Tpid = tpid + tpDestinationRates = append(tpDestinationRates, dr) } } return tpDestinationRates, nil @@ -186,7 +194,9 @@ func (csvs *CSVStorage) GetTpRatingPlans(tpid, tag string, p *utils.Paginator) ( log.Print("error loading rating plan: ", err) return nil, err } else { - tpRatingPlans = append(tpRatingPlans, tpRate.(TpRatingPlan)) + rp := tpRate.(TpRatingPlan) + rp.Tpid = tpid + tpRatingPlans = append(tpRatingPlans, rp) } } return tpRatingPlans, nil @@ -212,7 +222,12 @@ func (csvs *CSVStorage) GetTpRatingProfiles(filter *TpRatingProfile) ([]TpRating log.Print("error loading rating profile: ", err) return nil, err } else { - tpRatingProfiles = append(tpRatingProfiles, tpRate.(TpRatingProfile)) + rpf := tpRate.(TpRatingProfile) + if filter != nil { + rpf.Tpid = filter.Tpid + rpf.Loadid = filter.Loadid + } + tpRatingProfiles = append(tpRatingProfiles, rpf) } } return tpRatingProfiles, nil @@ -239,7 +254,9 @@ func (csvs *CSVStorage) GetTpSharedGroups(tpid, tag string) ([]TpSharedGroup, er log.Print("error loading shared group: ", err) return nil, err } else { - tpSharedGroups = append(tpSharedGroups, tpRate.(TpSharedGroup)) + sg := tpRate.(TpSharedGroup) + sg.Tpid = tpid + tpSharedGroups = append(tpSharedGroups, sg) } } return tpSharedGroups, nil @@ -264,7 +281,9 @@ func (csvs *CSVStorage) GetTpLCRs(tpid, tag string) ([]TpLcrRule, error) { } return nil, err } else { - tpLCRs = append(tpLCRs, tpRate.(TpLcrRule)) + lcr := tpRate.(TpLcrRule) + lcr.Tpid = tpid + tpLCRs = append(tpLCRs, lcr) } } return tpLCRs, nil @@ -290,7 +309,9 @@ func (csvs *CSVStorage) GetTpActions(tpid, tag string) ([]TpAction, error) { log.Print("error loading action: ", err) return nil, err } else { - tpActions = append(tpActions, tpAction.(TpAction)) + a := tpAction.(TpAction) + a.Tpid = tpid + tpActions = append(tpActions, a) } } return tpActions, nil @@ -312,7 +333,9 @@ func (csvs *CSVStorage) GetTpActionPlans(tpid, tag string) ([]TpActionPlan, erro log.Print("error loading action plan: ", err) return nil, err } else { - tpActionPlans = append(tpActionPlans, tpRate.(TpActionPlan)) + ap := tpRate.(TpActionPlan) + ap.Tpid = tpid + tpActionPlans = append(tpActionPlans, ap) } } return tpActionPlans, nil @@ -338,7 +361,9 @@ func (csvs *CSVStorage) GetTpActionTriggers(tpid, tag string) ([]TpActionTrigger log.Print("error loading action trigger: ", err) return nil, err } else { - tpActionTriggers = append(tpActionTriggers, tpAt.(TpActionTrigger)) + at := tpAt.(TpActionTrigger) + at.Tpid = tpid + tpActionTriggers = append(tpActionTriggers, at) } } return tpActionTriggers, nil @@ -364,7 +389,12 @@ func (csvs *CSVStorage) GetTpAccountActions(filter *TpAccountAction) ([]TpAccoun log.Print("error loading account action: ", err) return nil, err } else { - tpAccountActions = append(tpAccountActions, tpAa.(TpAccountAction)) + aa := tpAa.(TpAccountAction) + if filter != nil { + aa.Tpid = filter.Tpid + aa.Loadid = filter.Loadid + } + tpAccountActions = append(tpAccountActions, aa) } } return tpAccountActions, nil @@ -390,7 +420,12 @@ func (csvs *CSVStorage) GetTpDerivedChargers(filter *TpDerivedCharger) ([]TpDeri log.Print("error loading derived charger: ", err) return nil, err } else { - tpDerivedChargers = append(tpDerivedChargers, tpRate.(TpDerivedCharger)) + dc := tpRate.(TpDerivedCharger) + if filter != nil { + dc.Tpid = filter.Tpid + dc.Loadid = filter.Loadid + } + tpDerivedChargers = append(tpDerivedChargers, dc) } } return tpDerivedChargers, nil @@ -416,7 +451,9 @@ func (csvs *CSVStorage) GetTpCdrStats(tpid, tag string) ([]TpCdrStat, error) { log.Print("error loading cdr stat: ", err) return nil, err } else { - tpCdrStats = append(tpCdrStats, tpCdrStat.(TpCdrStat)) + cs := tpCdrStat.(TpCdrStat) + cs.Tpid = tpid + tpCdrStats = append(tpCdrStats, cs) } } return tpCdrStats, nil diff --git a/engine/storage_sql.go b/engine/storage_sql.go index 300b87ceb..eee16ddd7 100644 --- a/engine/storage_sql.go +++ b/engine/storage_sql.go @@ -208,7 +208,7 @@ func (self *SQLStorage) SetTpTimings(timings []TpTiming) error { return err } } - save := tx.Save(timing) + save := tx.Save(&timing) if save.Error != nil { tx.Rollback() return save.Error @@ -233,7 +233,7 @@ func (self *SQLStorage) SetTpDestinations(dests []TpDestination) error { return err } } - save := tx.Save(dest) + save := tx.Save(&dest) if save.Error != nil { tx.Rollback() return save.Error @@ -258,7 +258,7 @@ func (self *SQLStorage) SetTpRates(rs []TpRate) error { return err } } - save := tx.Save(rate) + save := tx.Save(&rate) if save.Error != nil { tx.Rollback() return save.Error @@ -285,7 +285,7 @@ func (self *SQLStorage) SetTpDestinationRates(drs []TpDestinationRate) error { } } - saved := tx.Save(dRate) + saved := tx.Save(&dRate) if saved.Error != nil { tx.Rollback() return saved.Error @@ -311,7 +311,7 @@ func (self *SQLStorage) SetTpRatingPlans(drts []TpRatingPlan) error { return err } } - saved := tx.Save(rPlan) + saved := tx.Save(&rPlan) if saved.Error != nil { tx.Rollback() return saved.Error @@ -336,7 +336,7 @@ func (self *SQLStorage) SetTpRatingProfiles(rpfs []TpRatingProfile) error { return err } } - saved := tx.Save(rpf) + saved := tx.Save(&rpf) if saved.Error != nil { tx.Rollback() return saved.Error @@ -361,7 +361,7 @@ func (self *SQLStorage) SetTpSharedGroups(sgs []TpSharedGroup) error { return err } } - saved := tx.Save(sGroup) + saved := tx.Save(&sGroup) if saved.Error != nil { tx.Rollback() return saved.Error @@ -386,7 +386,7 @@ func (self *SQLStorage) SetTpCdrStats(css []TpCdrStat) error { return err } } - saved := tx.Save(cStat) + saved := tx.Save(&cStat) if saved.Error != nil { tx.Rollback() return saved.Error @@ -417,7 +417,7 @@ func (self *SQLStorage) SetTpDerivedChargers(sgs []TpDerivedCharger) error { return err } } - if err := tx.Save(dCharger).Error; err != nil { + if err := tx.Save(&dCharger).Error; err != nil { tx.Rollback() return err } @@ -448,7 +448,7 @@ func (self *SQLStorage) SetTpLCRs(sgs []TpLcrRule) error { return err } } - if err := tx.Save(lcr).Error; err != nil { + if err := tx.Save(&lcr).Error; err != nil { tx.Rollback() return err } @@ -473,7 +473,7 @@ func (self *SQLStorage) SetTpActions(acts []TpAction) error { return err } } - saved := tx.Save(a) + saved := tx.Save(&a) if saved.Error != nil { tx.Rollback() return saved.Error @@ -498,7 +498,7 @@ func (self *SQLStorage) SetTpActionPlans(ats []TpActionPlan) error { return err } } - saved := tx.Save(aPlan) + saved := tx.Save(&aPlan) if saved.Error != nil { tx.Rollback() return saved.Error @@ -523,7 +523,7 @@ func (self *SQLStorage) SetTpActionTriggers(ats []TpActionTrigger) error { return err } } - saved := tx.Save(aTrigger) + saved := tx.Save(&aTrigger) if saved.Error != nil { tx.Rollback() return saved.Error @@ -550,7 +550,7 @@ func (self *SQLStorage) SetTpAccountActions(aas []TpAccountAction) error { return err } } - saved := tx.Save(aa) + saved := tx.Save(&aa) if saved.Error != nil { tx.Rollback() return saved.Error diff --git a/engine/tp_reader.go b/engine/tp_reader.go index 3359a77b1..88ac16304 100644 --- a/engine/tp_reader.go +++ b/engine/tp_reader.go @@ -282,7 +282,7 @@ func (tpr *TpReader) LoadRatingProfilesFiltered(qriedRpf *TpRatingProfile) error } func (tpr *TpReader) LoadRatingProfiles() (err error) { - tps, err := tpr.lr.GetTpRatingProfiles(nil) + tps, err := tpr.lr.GetTpRatingProfiles(&TpRatingProfile{Tpid: tpr.tpid}) if err != nil { return err } @@ -364,7 +364,7 @@ func (tpr *TpReader) LoadSharedGroupsFiltered(tag string, save bool) (err error) } func (tpr *TpReader) LoadSharedGroups() error { - return tpr.LoadSharedGroupsFiltered("", false) + return tpr.LoadSharedGroupsFiltered(tpr.tpid, false) } func (tpr *TpReader) LoadLCRs() (err error) { @@ -753,7 +753,7 @@ func (tpr *TpReader) LoadAccountActionsFiltered(qriedAA *TpAccountAction) error } func (tpr *TpReader) LoadAccountActions() (err error) { - tps, err := tpr.lr.GetTpAccountActions(nil) + tps, err := tpr.lr.GetTpAccountActions(&TpAccountAction{Tpid: tpr.tpid}) if err != nil { return err } @@ -835,7 +835,7 @@ func (tpr *TpReader) LoadDerivedChargersFiltered(filter *TpDerivedCharger, save } func (tpr *TpReader) LoadDerivedChargers() (err error) { - return tpr.LoadDerivedChargersFiltered(nil, false) + return tpr.LoadDerivedChargersFiltered(&TpDerivedCharger{Tpid: tpr.tpid}, false) } func (tpr *TpReader) LoadCdrStatsFiltered(tag string, save bool) (err error) { diff --git a/engine/tpimporter_csv.go b/engine/tpimporter_csv.go index 6ed8d6206..3e09bf717 100644 --- a/engine/tpimporter_csv.go +++ b/engine/tpimporter_csv.go @@ -22,6 +22,7 @@ import ( "fmt" "io/ioutil" "log" + "path" "github.com/cgrates/cgrates/utils" ) @@ -56,7 +57,21 @@ var fileHandlers = map[string]func(*TPCSVImporter, string) error{ } func (self *TPCSVImporter) Run() error { - self.csvr = NewFileCSVStorage(self.Sep, utils.DESTINATIONS_CSV, utils.TIMINGS_CSV, utils.RATES_CSV, utils.DESTINATION_RATES_CSV, utils.RATING_PLANS_CSV, utils.RATING_PROFILES_CSV, utils.SHARED_GROUPS_CSV, utils.LCRS_CSV, utils.ACTIONS_CSV, utils.ACTION_PLANS_CSV, utils.ACTION_TRIGGERS_CSV, utils.ACCOUNT_ACTIONS_CSV, utils.DERIVED_CHARGERS_CSV, utils.CDR_STATS_CSV) + self.csvr = NewFileCSVStorage(self.Sep, + path.Join(self.DirPath, utils.DESTINATIONS_CSV), + path.Join(self.DirPath, utils.TIMINGS_CSV), + path.Join(self.DirPath, utils.RATES_CSV), + path.Join(self.DirPath, utils.DESTINATION_RATES_CSV), + path.Join(self.DirPath, utils.RATING_PLANS_CSV), + path.Join(self.DirPath, utils.RATING_PROFILES_CSV), + path.Join(self.DirPath, utils.SHARED_GROUPS_CSV), + path.Join(self.DirPath, utils.LCRS_CSV), + path.Join(self.DirPath, utils.ACTIONS_CSV), + path.Join(self.DirPath, utils.ACTION_PLANS_CSV), + path.Join(self.DirPath, utils.ACTION_TRIGGERS_CSV), + path.Join(self.DirPath, utils.ACCOUNT_ACTIONS_CSV), + path.Join(self.DirPath, utils.DERIVED_CHARGERS_CSV), + path.Join(self.DirPath, utils.CDR_STATS_CSV)) files, _ := ioutil.ReadDir(self.DirPath) for _, f := range files { fHandler, hasName := fileHandlers[f.Name()] @@ -151,7 +166,10 @@ func (self *TPCSVImporter) importSharedGroups(fn string) error { if err != nil { return err } - + loadId := utils.CSV_LOAD //Autogenerate rating profile id + if self.ImportId != "" { + loadId += "_" + self.ImportId + } return self.StorDb.SetTpSharedGroups(tps) }