diff --git a/data/storage/docker_mysql/scripts/create_cdrs_tables.sql b/data/storage/docker_mysql/scripts/create_cdrs_tables.sql index 6c2a917e6..a563b1bac 100644 --- a/data/storage/docker_mysql/scripts/create_cdrs_tables.sql +++ b/data/storage/docker_mysql/scripts/create_cdrs_tables.sql @@ -18,7 +18,7 @@ CREATE TABLE cdrs ( subject varchar(128) NOT NULL, destination varchar(128) NOT NULL, setup_time datetime NOT NULL, - answer_time datetime NOT NULL, + answer_time datetime NULL, `usage` BIGINT NOT NULL, extra_fields text NOT NULL, cost_source varchar(64) NOT NULL, diff --git a/data/storage/mysql/create_cdrs_tables.sql b/data/storage/mysql/create_cdrs_tables.sql index 6c2a917e6..a563b1bac 100644 --- a/data/storage/mysql/create_cdrs_tables.sql +++ b/data/storage/mysql/create_cdrs_tables.sql @@ -18,7 +18,7 @@ CREATE TABLE cdrs ( subject varchar(128) NOT NULL, destination varchar(128) NOT NULL, setup_time datetime NOT NULL, - answer_time datetime NOT NULL, + answer_time datetime NULL, `usage` BIGINT NOT NULL, extra_fields text NOT NULL, cost_source varchar(64) NOT NULL, diff --git a/data/storage/postgres/create_cdrs_tables.sql b/data/storage/postgres/create_cdrs_tables.sql index f7d203382..3ae7d5ccb 100644 --- a/data/storage/postgres/create_cdrs_tables.sql +++ b/data/storage/postgres/create_cdrs_tables.sql @@ -18,7 +18,7 @@ CREATE TABLE cdrs ( subject VARCHAR(128) NOT NULL, destination VARCHAR(128) NOT NULL, setup_time TIMESTAMP WITH TIME ZONE NOT NULL, - answer_time TIMESTAMP WITH TIME ZONE NOT NULL, + answer_time TIMESTAMP WITH TIME ZONE NULL, usage BIGINT NOT NULL, extra_fields jsonb NOT NULL, cost_source VARCHAR(64) NOT NULL, diff --git a/engine/cdr.go b/engine/cdr.go index 632a9276f..2e3f03b24 100644 --- a/engine/cdr.go +++ b/engine/cdr.go @@ -272,7 +272,9 @@ func (cdr *CDR) AsCDRsql() (cdrSQL *CDRsql) { cdrSQL.Subject = cdr.Subject cdrSQL.Destination = cdr.Destination cdrSQL.SetupTime = cdr.SetupTime - cdrSQL.AnswerTime = cdr.AnswerTime + if cdrSQL.AnswerTime != nil { + cdr.AnswerTime = *cdrSQL.AnswerTime + } cdrSQL.Usage = cdr.Usage.Nanoseconds() cdrSQL.ExtraFields = utils.ToJSON(cdr.ExtraFields) cdrSQL.CostSource = cdr.CostSource @@ -308,7 +310,9 @@ func NewCDRFromSQL(cdrSQL *CDRsql) (cdr *CDR, err error) { cdr.Subject = cdrSQL.Subject cdr.Destination = cdrSQL.Destination cdr.SetupTime = cdrSQL.SetupTime - cdr.AnswerTime = cdrSQL.AnswerTime + if cdrSQL.AnswerTime != nil { + cdr.AnswerTime = *cdrSQL.AnswerTime + } cdr.Usage = time.Duration(cdrSQL.Usage) cdr.CostSource = cdrSQL.CostSource cdr.Cost = cdrSQL.Cost diff --git a/engine/models.go b/engine/models.go index 5989992bd..8cbed9ce8 100644 --- a/engine/models.go +++ b/engine/models.go @@ -119,7 +119,7 @@ type CDRsql struct { Subject string Destination string SetupTime time.Time - AnswerTime time.Time + AnswerTime *time.Time Usage int64 ExtraFields string CostSource string diff --git a/migrator/cdrs.go b/migrator/cdrs.go index 918e0283a..fec653eb3 100644 --- a/migrator/cdrs.go +++ b/migrator/cdrs.go @@ -195,7 +195,9 @@ func NewV1CDRFromCDRSql(cdrSql *engine.CDRsql) (cdr *v1Cdrs, err error) { cdr.Subject = cdrSql.Subject cdr.Destination = cdrSql.Destination cdr.SetupTime = cdrSql.SetupTime - cdr.AnswerTime = cdrSql.AnswerTime + if !cdr.AnswerTime.IsZero() { + cdrSql.AnswerTime = utils.TimePointer(cdr.AnswerTime) + } cdr.Usage = time.Duration(cdrSql.Usage) cdr.CostSource = cdrSql.CostSource cdr.Cost = cdrSql.Cost @@ -223,7 +225,9 @@ func (cdr *v1Cdrs) AsCDRsql() (cdrSql *engine.CDRsql) { cdrSql.Subject = cdr.Subject cdrSql.Destination = cdr.Destination cdrSql.SetupTime = cdr.SetupTime - cdrSql.AnswerTime = cdr.AnswerTime + if cdrSql.AnswerTime != nil { + cdr.AnswerTime = *cdrSql.AnswerTime + } cdrSql.Usage = cdr.Usage.Nanoseconds() cdrSql.ExtraFields = utils.ToJSON(cdr.ExtraFields) cdrSql.CostSource = cdr.CostSource