From 1e9f1131ba8bcfac8210bf6dedc941b14edfd04a Mon Sep 17 00:00:00 2001 From: DanB Date: Sat, 8 Nov 2014 18:25:55 +0100 Subject: [PATCH] MySQL and PostgreSQL implementing now their own Flush() --- .../mysql/create_tariffplan_tables.sql | 22 ++++++++-------- engine/models.go | 4 +-- engine/storage_interface.go | 9 +++---- engine/storage_mysql.go | 26 ++++++++++++++++--- engine/storage_postgres.go | 18 +++++++++++++ engine/storage_sql.go | 24 +++++------------ 6 files changed, 63 insertions(+), 40 deletions(-) diff --git a/data/storage/mysql/create_tariffplan_tables.sql b/data/storage/mysql/create_tariffplan_tables.sql index 77e035fb3..d5c9a1702 100644 --- a/data/storage/mysql/create_tariffplan_tables.sql +++ b/data/storage/mysql/create_tariffplan_tables.sql @@ -83,7 +83,7 @@ CREATE TABLE `tp_rating_plans` ( `tag` varchar(64) NOT NULL, `destrates_tag` varchar(64) NOT NULL, `timing_tag` varchar(64) NOT NULL, - `weight` double(8,2) NOT NULL, + `weight` DECIMAL(8,2) NOT NULL, PRIMARY KEY (`id`), KEY `tpid` (`tpid`), KEY `tpid_rpl` (`tpid`,`tag`), @@ -140,15 +140,15 @@ CREATE TABLE `tp_actions` ( `action` varchar(24) NOT NULL, `balance_type` varchar(24) NOT NULL, `direction` varchar(8) NOT NULL, - `units` double(20,4) NOT NULL, + `units` DECIMAL(20,4) NOT NULL, `expiry_time` varchar(24) NOT NULL, `destination_tag` varchar(64) NOT NULL, `rating_subject` varchar(64) NOT NULL, `category` varchar(16) NOT NULL, `shared_group` varchar(64) NOT NULL, - `balance_weight` double(8,2) NOT NULL, + `balance_weight` DECIMAL(8,2) NOT NULL, `extra_parameters` varchar(256) NOT NULL, - `weight` double(8,2) NOT NULL, + `weight` DECIMAL(8,2) NOT NULL, PRIMARY KEY (`id`), KEY `tpid` (`tpid`), UNIQUE KEY `unique_action` (`tpid`,`tag`,`action`,`balance_type`,`direction`,`expiry_time`,`destination_tag`,`shared_group`,`balance_weight`,`weight`) @@ -165,7 +165,7 @@ CREATE TABLE `tp_action_plans` ( `tag` varchar(64) NOT NULL, `actions_tag` varchar(64) NOT NULL, `timing_tag` varchar(64) NOT NULL, - `weight` double(8,2) NOT NULL, + `weight` DECIMAL(8,2) NOT NULL, PRIMARY KEY (`id`), KEY `tpid` (`tpid`), UNIQUE KEY `unique_action_schedule` (`tpid`,`tag`,`actions_tag`) @@ -183,18 +183,18 @@ CREATE TABLE `tp_action_triggers` ( `balance_type` varchar(24) NOT NULL, `direction` varchar(8) NOT NULL, `threshold_type` char(12) NOT NULL, - `threshold_value` double(20,4) NOT NULL, + `threshold_value` DECIMAL(20,4) NOT NULL, `recurrent` bool NOT NULL, `min_sleep` int(11) NOT NULL, `destination_tag` varchar(64) NOT NULL, - `balance_weight` double(8,2) NOT NULL, + `balance_weight` DECIMAL(8,2) NOT NULL, `balance_expiry_time` varchar(24) NOT NULL, `balance_rating_subject` varchar(64) NOT NULL, `balance_category` varchar(16) NOT NULL, `balance_shared_group` varchar(64) NOT NULL, `min_queued_items` int(11) NOT NULL, `actions_tag` varchar(64) NOT NULL, - `weight` double(8,2) NOT NULL, + `weight` DECIMAL(8,2) NOT NULL, PRIMARY KEY (`id`), KEY `tpid` (`tpid`), UNIQUE KEY `unique_trigger_definition` (`tpid`,`tag`,`balance_type`,`direction`,`threshold_type`,`threshold_value`,`destination_tag`,`actions_tag`) @@ -235,7 +235,7 @@ CREATE TABLE tp_lcr_rules ( `strategy` varchar(16) NOT NULL, `suppliers` varchar(64) NOT NULL, `activation_time` varchar(24) NOT NULL, - `weight` double(8,2) NOT NULL, + `weight` DECIMAL(8,2) NOT NULL, PRIMARY KEY (`id`), KEY `tpid` (`tpid`) ); @@ -254,7 +254,7 @@ CREATE TABLE tp_derived_chargers ( `category` varchar(16) NOT NULL, `account` varchar(24) NOT NULL, `subject` varchar(64) NOT NULL, - `run_id` varchar(24) NOT NULL, + `runid` varchar(24) NOT NULL, `run_filters` varchar(256) NOT NULL, `req_type_field` varchar(24) NOT NULL, `direction_field` varchar(24) NOT NULL, @@ -295,7 +295,7 @@ CREATE TABLE tp_cdr_stats ( `subject` varchar(64) NOT NULL, `destination_prefix` varchar(64) NOT NULL, `usage_interval` varchar(64) NOT NULL, - `mediation_run_ids` varchar(64) NOT NULL, + `mediation_runids` varchar(64) NOT NULL, `rated_account` varchar(64) NOT NULL, `rated_subject` varchar(64) NOT NULL, `cost_interval` varchar(24) NOT NULL, diff --git a/engine/models.go b/engine/models.go index ced9c14c0..7576179b0 100644 --- a/engine/models.go +++ b/engine/models.go @@ -206,7 +206,7 @@ type TpDerivedCharger struct { Category string Account string Subject string - RunId string + Runid string RunFilters string ReqTypeField string DirectionField string @@ -253,7 +253,7 @@ type TpCdrStat struct { Subject string DestinationPrefix string UsageInterval string - MediationRunIds string + MediationRunids string RatedAccount string RatedSubject string CostInterval string diff --git a/engine/storage_interface.go b/engine/storage_interface.go index b90c3e80e..0280f0a29 100644 --- a/engine/storage_interface.go +++ b/engine/storage_interface.go @@ -52,11 +52,10 @@ const ( LOG_CDR = "cdr_" LOG_MEDIATED_CDR = "mcd_" // sources - SESSION_MANAGER_SOURCE = "SMR" - MEDIATOR_SOURCE = "MED" - SCHED_SOURCE = "SCH" - RATER_SOURCE = "RAT" - // Some consts used in tests + SESSION_MANAGER_SOURCE = "SMR" + MEDIATOR_SOURCE = "MED" + SCHED_SOURCE = "SCH" + RATER_SOURCE = "RAT" CREATE_CDRS_TABLES_SQL = "create_cdrs_tables.sql" CREATE_TARIFFPLAN_TABLES_SQL = "create_tariffplan_tables.sql" TEST_SQL = "TEST_SQL" diff --git a/engine/storage_mysql.go b/engine/storage_mysql.go index 4f0d50e2d..333d7d223 100644 --- a/engine/storage_mysql.go +++ b/engine/storage_mysql.go @@ -20,15 +20,14 @@ package engine import ( "fmt" + "github.com/cgrates/cgrates/config" + "github.com/cgrates/cgrates/utils" + "path" _ "github.com/go-sql-driver/mysql" "github.com/jinzhu/gorm" ) -type MySQLStorage struct { - *SQLStorage -} - func NewMySQLStorage(host, port, name, user, password string, maxConn, maxIdleConn int) (Storage, error) { connectString := fmt.Sprintf("%s:%s@tcp(%s:%s)/%s?charset=utf8&loc=Local&parseTime=true", user, password, host, port, name) db, err := gorm.Open("mysql", connectString) @@ -45,3 +44,22 @@ func NewMySQLStorage(host, port, name, user, password string, maxConn, maxIdleCo return &MySQLStorage{&SQLStorage{Db: db.DB(), db: db}}, nil } + +type MySQLStorage struct { + *SQLStorage +} + +func (self *MySQLStorage) Flush() (err error) { + cfg := config.CgrConfig() + for _, scriptName := range []string{CREATE_CDRS_TABLES_SQL, CREATE_TARIFFPLAN_TABLES_SQL} { + if err := self.CreateTablesFromScript(path.Join(cfg.DataFolderPath, "storage", utils.MYSQL, scriptName)); err != nil { + return err + } + } + for _, tbl := range []string{utils.TBL_CDRS_PRIMARY, utils.TBL_CDRS_EXTRA} { + if _, err := self.Db.Query(fmt.Sprintf("SELECT 1 FROM %s", tbl)); err != nil { + return err + } + } + return nil +} diff --git a/engine/storage_postgres.go b/engine/storage_postgres.go index 431c2bc01..2bd8a3b39 100644 --- a/engine/storage_postgres.go +++ b/engine/storage_postgres.go @@ -20,6 +20,9 @@ package engine import ( "fmt" + "github.com/cgrates/cgrates/config" + "github.com/cgrates/cgrates/utils" + "path" _ "github.com/bmizerany/pq" "github.com/jinzhu/gorm" @@ -45,3 +48,18 @@ func NewPostgresStorage(host, port, name, user, password string) (Storage, error return &PostgresStorage{&SQLStorage{Db: db.DB(), db: db}}, nil } + +func (self *PostgresStorage) Flush() (err error) { + cfg := config.CgrConfig() + for _, scriptName := range []string{CREATE_CDRS_TABLES_SQL, CREATE_TARIFFPLAN_TABLES_SQL} { + if err := self.CreateTablesFromScript(path.Join(cfg.DataFolderPath, "storage", utils.POSTGRES, scriptName)); err != nil { + return err + } + } + for _, tbl := range []string{utils.TBL_CDRS_PRIMARY, utils.TBL_CDRS_EXTRA} { + if _, err := self.Db.Query(fmt.Sprintf("SELECT 1 FROM %s", tbl)); err != nil { + return err + } + } + return nil +} diff --git a/engine/storage_sql.go b/engine/storage_sql.go index 785a54c50..890ef3417 100644 --- a/engine/storage_sql.go +++ b/engine/storage_sql.go @@ -22,14 +22,13 @@ import ( "bytes" "database/sql" "encoding/json" + "errors" "fmt" "io/ioutil" - "path" "strconv" "strings" "time" - "github.com/cgrates/cgrates/config" "github.com/cgrates/cgrates/utils" "github.com/go-sql-driver/mysql" "github.com/jinzhu/gorm" @@ -46,18 +45,7 @@ func (self *SQLStorage) Close() { } func (self *SQLStorage) Flush() (err error) { - cfg := config.CgrConfig() - for _, scriptName := range []string{CREATE_CDRS_TABLES_SQL, CREATE_TARIFFPLAN_TABLES_SQL} { - if err := self.CreateTablesFromScript(path.Join(cfg.DataFolderPath, "storage", "mysql", scriptName)); err != nil { - return err - } - } - for _, tbl := range []string{utils.TBL_CDRS_PRIMARY, utils.TBL_CDRS_EXTRA} { - if _, err := self.Db.Query(fmt.Sprintf("SELECT 1 from %s", tbl)); err != nil { - return err - } - } - return nil + return errors.New(utils.ERR_NOT_IMPLEMENTED) } func (self *SQLStorage) GetKeysForPrefix(prefix string) ([]string, error) { @@ -380,7 +368,7 @@ func (self *SQLStorage) SetTPCdrStats(tpid string, css map[string][]*utils.TPCdr Subject: cs.Subject, DestinationPrefix: cs.DestinationPrefix, UsageInterval: cs.UsageInterval, - MediationRunIds: cs.MediationRunIds, + MediationRunids: cs.MediationRunIds, RatedAccount: cs.RatedAccount, RatedSubject: cs.RatedSubject, CostInterval: cs.CostInterval, @@ -415,7 +403,7 @@ func (self *SQLStorage) SetTPDerivedChargers(tpid string, sgs map[string][]*util for _, dc := range dChargers { newDc := TpDerivedCharger{ Tpid: tpid, - RunId: dc.RunId, + Runid: dc.RunId, RunFilters: dc.RunFilters, ReqTypeField: dc.ReqTypeField, DirectionField: dc.DirectionField, @@ -1394,7 +1382,7 @@ func (self *SQLStorage) GetTpCdrStats(tpid, tag string) (map[string][]*utils.TPC Subject: tpCs.Subject, DestinationPrefix: tpCs.DestinationPrefix, UsageInterval: tpCs.UsageInterval, - MediationRunIds: tpCs.MediationRunIds, + MediationRunIds: tpCs.MediationRunids, RatedAccount: tpCs.RatedAccount, RatedSubject: tpCs.RatedSubject, CostInterval: tpCs.CostInterval, @@ -1437,7 +1425,7 @@ func (self *SQLStorage) GetTpDerivedChargers(dc *utils.TPDerivedChargers) (map[s dcs[tag] = tpDc } dcs[tag].DerivedChargers = append(dcs[tag].DerivedChargers, &utils.TPDerivedCharger{ - RunId: tpDcMdl.RunId, + RunId: tpDcMdl.Runid, RunFilters: tpDcMdl.RunFilters, ReqTypeField: tpDcMdl.ReqTypeField, DirectionField: tpDcMdl.DirectionField,