mirror of
https://github.com/cgrates/cgrates.git
synced 2026-02-11 18:16:24 +05:00
MySQL and PostgreSQL implementing now their own Flush()
This commit is contained in:
@@ -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,
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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"
|
||||
|
||||
@@ -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
|
||||
}
|
||||
|
||||
@@ -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
|
||||
}
|
||||
|
||||
@@ -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,
|
||||
|
||||
Reference in New Issue
Block a user