From 5cbd7e6e5c8a154fe1c3a803051827d160fe1170 Mon Sep 17 00:00:00 2001 From: andronache Date: Thu, 9 Dec 2021 17:28:14 +0200 Subject: [PATCH] Default value for answer time is now null in cdrsql --- data/storage/docker_mysql/scripts/create_cdrs_tables.sql | 2 +- data/storage/migrator/mysql_tables_update.sql | 2 +- data/storage/migrator/pg_tables_update.sql | 2 +- data/storage/mysql/alter_cdr_tables_rc5_rc6.sql | 4 ++-- data/storage/mysql/create_cdrs_tables.sql | 2 +- data/storage/postgres/create_cdrs_tables.sql | 2 +- engine/cdr.go | 8 ++++++-- engine/models.go | 2 +- migrator/cdrs.go | 8 ++++++-- 9 files changed, 20 insertions(+), 12 deletions(-) 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/migrator/mysql_tables_update.sql b/data/storage/migrator/mysql_tables_update.sql index bb65b7f11..3deb926f5 100755 --- a/data/storage/migrator/mysql_tables_update.sql +++ b/data/storage/migrator/mysql_tables_update.sql @@ -20,7 +20,7 @@ CREATE TABLE cdrs ( destination varchar(128) NOT NULL, setup_time datetime NOT NULL, pdd DECIMAL(12,9) NOT NULL, - answer_time datetime NOT NULL, + answer_time datetime NULL, `usage` DECIMAL(30,9) NOT NULL, supplier varchar(128) NOT NULL, disconnect_cause varchar(64) NOT NULL, diff --git a/data/storage/migrator/pg_tables_update.sql b/data/storage/migrator/pg_tables_update.sql index d14da37bc..54ba05417 100755 --- a/data/storage/migrator/pg_tables_update.sql +++ b/data/storage/migrator/pg_tables_update.sql @@ -19,7 +19,7 @@ CREATE TABLE cdrs ( destination VARCHAR(128) NOT NULL, setup_time TIMESTAMP WITH TIME ZONE NOT NULL, pdd NUMERIC(12,9) NOT NULL, - answer_time TIMESTAMP WITH TIME ZONE NOT NULL, + answer_time TIMESTAMP WITH TIME ZONE NULL, usage NUMERIC(30,9) NOT NULL, supplier VARCHAR(128) NOT NULL, disconnect_cause VARCHAR(64) NOT NULL, diff --git a/data/storage/mysql/alter_cdr_tables_rc5_rc6.sql b/data/storage/mysql/alter_cdr_tables_rc5_rc6.sql index 8b5694795..e3ddad60b 100644 --- a/data/storage/mysql/alter_cdr_tables_rc5_rc6.sql +++ b/data/storage/mysql/alter_cdr_tables_rc5_rc6.sql @@ -4,7 +4,7 @@ ALTER TABLE `cdrs_primary` CHANGE COLUMN tbid `id` int(11) NOT NULL auto_increment first , CHANGE `cgrid` `cgrid` char(40) NOT NULL after `id` , ADD COLUMN `pdd` decimal(12,9) NOT NULL after `setup_time` , - CHANGE `answer_time` `answer_time` datetime NOT NULL after `pdd` , + CHANGE `answer_time` `answer_time` datetime NULL after `pdd` , ADD COLUMN `supplier` varchar(128) NOT NULL after `usage` , ADD COLUMN `disconnect_cause` varchar(64) NOT NULL after `supplier` , ADD COLUMN `created_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP on update CURRENT_TIMESTAMP after `disconnect_cause` , @@ -37,7 +37,7 @@ ALTER TABLE `rated_cdrs` CHANGE `cgrid` `cgrid` char(40) NOT NULL after `id` , CHANGE `category` `category` varchar(32) NOT NULL after `tenant` , ADD COLUMN `pdd` decimal(12,9) NOT NULL after `setup_time` , - CHANGE `answer_time` `answer_time` datetime NOT NULL after `pdd` , + CHANGE `answer_time` `answer_time` datetime NULL after `pdd` , ADD COLUMN `supplier` varchar(128) NOT NULL after `usage` , ADD COLUMN `disconnect_cause` varchar(64) NOT NULL after `supplier` , CHANGE `cost` `cost` decimal(20,4) NULL after `disconnect_cause` , 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 cde9fc063..d01f00ebb 100644 --- a/engine/cdr.go +++ b/engine/cdr.go @@ -293,7 +293,9 @@ func (cdr *CDR) AsCDRsql() (cdrSQL *CDRsql) { cdrSQL.Subject = cdr.Subject cdrSQL.Destination = cdr.Destination cdrSQL.SetupTime = cdr.SetupTime - cdrSQL.AnswerTime = cdr.AnswerTime + if !cdr.AnswerTime.IsZero() { + cdrSQL.AnswerTime = utils.TimePointer(cdr.AnswerTime) + } cdrSQL.Usage = cdr.Usage.Nanoseconds() cdrSQL.ExtraFields = utils.ToJSON(cdr.ExtraFields) cdrSQL.CostSource = cdr.CostSource @@ -330,7 +332,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 807a90ee6..ba78778dc 100644 --- a/engine/models.go +++ b/engine/models.go @@ -335,7 +335,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 655eafb2c..0e96bb235 100644 --- a/migrator/cdrs.go +++ b/migrator/cdrs.go @@ -183,7 +183,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 cdrSql.AnswerTime != nil { + cdr.AnswerTime = *cdrSql.AnswerTime + } cdr.Usage = time.Duration(cdrSql.Usage) cdr.CostSource = cdrSql.CostSource cdr.Cost = cdrSql.Cost @@ -216,7 +218,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 !cdr.AnswerTime.IsZero() { + cdrSql.AnswerTime = utils.TimePointer(cdr.AnswerTime) + } cdrSql.Usage = cdr.Usage.Nanoseconds() cdrSql.ExtraFields = utils.ToJSON(cdr.ExtraFields) cdrSql.CostSource = cdr.CostSource