Support for latest gorm

This commit is contained in:
DanB
2016-04-04 13:02:06 +02:00
parent cb80a24bac
commit a307dc3ce0
8 changed files with 27 additions and 37 deletions

View File

@@ -247,6 +247,7 @@ func TestV2CDRsMySQLRateWithoutTP(t *testing.T) {
if !*testLocal {
return
}
//"d32a571d7bcbc6700fd35c1c0c5c6f458a62e260"
rawCdrCGRID := utils.Sha1("bbb1", time.Date(2015, 11, 21, 10, 47, 24, 0, time.UTC).String())
// Rate the injected CDR, should not rate it since we have no TP loaded
attrs := utils.AttrRateCdrs{CgrIds: []string{rawCdrCGRID}}

View File

@@ -47,8 +47,8 @@
"sm_generic": {
"enabled": true,
"rater": "127.0.0.1:2013",
"cdrs": "127.0.0.1:2013",
"rater": "internal",
"cdrs": "internal",
},
"diameter_agent": {

View File

@@ -29,9 +29,9 @@ CREATE TABLE cdrs (
cost DECIMAL(20,4) NOT NULL,
cost_details text,
extra_info text,
created_at TIMESTAMP,
updated_at TIMESTAMP,
deleted_at TIMESTAMP,
created_at TIMESTAMP NULL,
updated_at TIMESTAMP NULL,
deleted_at TIMESTAMP NULL,
PRIMARY KEY (id),
UNIQUE KEY cdrrun (cgrid, run_id, origin_id)
);
@@ -46,8 +46,8 @@ CREATE TABLE sm_costs (
cost_source varchar(64) NOT NULL,
`usage` DECIMAL(30,9) NOT NULL,
cost_details text,
created_at TIMESTAMP,
deleted_at TIMESTAMP,
created_at TIMESTAMP NULL,
deleted_at TIMESTAMP NULL,
PRIMARY KEY (`id`),
UNIQUE KEY costid (cgrid,run_id),
KEY origin_idx (origin_host, origin_id),

View File

@@ -30,8 +30,8 @@ CREATE TABLE cdrs (
cost_details jsonb,
extra_info text,
created_at TIMESTAMP,
updated_at TIMESTAMP,
deleted_at TIMESTAMP,
updated_at TIMESTAMP NULL,
deleted_at TIMESTAMP NULL,
UNIQUE (cgrid, run_id, origin_id)
);
;
@@ -50,7 +50,7 @@ CREATE TABLE sm_costs (
usage NUMERIC(30,9) NOT NULL,
cost_details jsonb,
created_at TIMESTAMP,
deleted_at TIMESTAMP,
deleted_at TIMESTAMP NULL,
UNIQUE (cgrid, run_id)
);
DROP INDEX IF EXISTS cgrid_smcost_idx;

View File

@@ -375,7 +375,7 @@ func (self *CdrServer) rateCDR(cdr *CDR) ([]*CDR, error) {
}
return cdrsRated, nil
}
if err != nil && (err == gorm.RecordNotFound || err == mgov2.ErrNotFound) { //calculate CDR as for pseudoprepaid
if err != nil && (err == gorm.ErrRecordNotFound || err == mgov2.ErrNotFound) { //calculate CDR as for pseudoprepaid
utils.Logger.Warning(fmt.Sprintf("<Cdrs> WARNING: Could not find CallCostLog for cgrid: %s, source: %s, runid: %s, will recalculate", cdr.CGRID, utils.SESSION_MANAGER_SOURCE, cdr.RunID))
qryCC, err = self.getCostFromRater(cdr)
}

View File

@@ -440,7 +440,7 @@ type TBLCDRs struct {
ExtraInfo string
CreatedAt time.Time
UpdatedAt time.Time
DeletedAt time.Time
DeletedAt *time.Time
}
func (t TBLCDRs) TableName() string {
@@ -457,7 +457,7 @@ type TBLSMCosts struct {
Usage float64
CostDetails string
CreatedAt time.Time
DeletedAt time.Time
DeletedAt *time.Time
}
func (t TBLSMCosts) TableName() string {

View File

@@ -34,7 +34,7 @@ import (
type SQLStorage struct {
Db *sql.DB
db gorm.DB
db *gorm.DB
}
func (self *SQLStorage) Close() {
@@ -675,8 +675,8 @@ func (self *SQLStorage) SetCDR(cdr *CDR, allowUpdate bool) error {
return saved.Error
}
tx = self.db.Begin()
updated := tx.Model(TBLCDRs{}).Where(&TBLCDRs{Cgrid: cdr.CGRID, RunID: cdr.RunID}).Updates(
&TBLCDRs{
updated := tx.Model(&TBLCDRs{}).Where(&TBLCDRs{Cgrid: cdr.CGRID, RunID: cdr.RunID, OriginID: cdr.OriginID}).Updates(
TBLCDRs{
OriginHost: cdr.OriginHost,
Source: cdr.Source,
OriginID: cdr.OriginID,
@@ -718,9 +718,6 @@ func (self *SQLStorage) GetCDRs(qryFltr *utils.CDRsFilter, remove bool) ([]*CDR,
q := self.db.Table(utils.TBL_CDRS).Select("*")
if qryFltr.Unscoped {
q = q.Unscoped()
} else {
// Query filter
q = q.Where("(deleted_at IS NULL OR deleted_at <= '0001-01-02')") // Soft deletes
}
// Add filters, use in to replace the high number of ORs
if len(qryFltr.CGRIDs) != 0 {
@@ -957,12 +954,15 @@ func (self *SQLStorage) GetCDRs(qryFltr *utils.CDRsFilter, remove bool) ([]*CDR,
q.Find(&results)
for _, result := range results {
var extraFieldsMp map[string]string
if err := json.Unmarshal([]byte(result.ExtraFields), &extraFieldsMp); err != nil {
return nil, 0, fmt.Errorf("JSON unmarshal error for cgrid: %s, runid: %v, error: %s", result.Cgrid, result.RunID, err.Error())
extraFieldsMp := make(map[string]string)
if result.ExtraFields != "" {
if err := json.Unmarshal([]byte(result.ExtraFields), &extraFieldsMp); err != nil {
utils.Logger.Debug(fmt.Sprintf("Unmarshall json for result: %+v, error: %v", result.ExtraFields, err))
return nil, 0, fmt.Errorf("JSON unmarshal error for cgrid: %s, runid: %v, error: %s", result.Cgrid, result.RunID, err.Error())
}
}
var callCost CallCost
if len(result.CostDetails) != 0 {
if result.CostDetails != "" {
if err := json.Unmarshal([]byte(result.CostDetails), &callCost); err != nil {
return nil, 0, fmt.Errorf("JSON unmarshal callcost error for cgrid: %s, runid: %v, error: %s", result.Cgrid, result.RunID, err.Error())
}

17
glide.lock generated
View File

@@ -1,8 +1,6 @@
hash: c4e3a1bdd7452ec3af195e09b8b3b1b9a61e36edfad557aeb01686706019c352
updated: 2016-03-09T00:08:37.493018177+02:00
hash: 5c488630d1d32687b7a3c3b22c47ceaf7eb3cffb764799706728a6accbcd3ff5
updated: 2016-04-01T13:47:06.215526502+02:00
imports:
- name: github.com/cenkalti/hub
version: 57d753b5f4856e77b3cf8ecce78c97215a7d324d
- name: github.com/cenkalti/rpc2
version: 2d1be381ce47537e9e076b2b76dc70933162e4e9
- name: github.com/cgrates/fsock
@@ -23,22 +21,16 @@ imports:
- diam/datatype
- diam/dict
- diam/sm
- diam/sm/smparser
- diam/sm/smpeer
- name: github.com/go-sql-driver/mysql
version: 0f2db9e6c9cff80a97ca5c2c5096242cc1554e16
- name: github.com/gorhill/cronexpr
version: a557574d6c024ed6e36acc8b610f5f211c91568a
- name: github.com/jinzhu/gorm
version: 2f7811c55f286c55cfc3a2aefb5c4049b9cd5214
- name: github.com/jinzhu/inflection
version: 3272df6c21d04180007eb3349844c89a3856bc25
version: 2530dcbccd9c9ff7ce5a903e01bbf8601b726112
- name: github.com/kr/pty
version: f7ee69f31298ecbe5d2b349c711e2547a617d398
- name: github.com/lib/pq
version: 165a3529e799da61ab10faed1fabff3662d6193f
subpackages:
- oid
- name: github.com/mediocregopher/radix.v2
version: 7bdaf7c45ec452ca691ab20535471e24460f0876
subpackages:
@@ -54,13 +46,10 @@ imports:
version: a4bbce9fcae005b22ae5443f6af064d80a6f5a55
subpackages:
- websocket
- context
- name: gopkg.in/fsnotify.v1
version: 875cf421b32f8f1b31bd43776297876d01542279
- name: gopkg.in/mgo.v2
version: d90005c5262a3463800497ea5a89aed5fe22c886
subpackages:
- bson
- internal/sasl
- internal/scram
devImports: []