diff --git a/lib/NGCP/BulkProcessor/Dao/Trunk/accounting/cdr.pm b/lib/NGCP/BulkProcessor/Dao/Trunk/accounting/cdr.pm index 5eb86e1..43b2d65 100644 --- a/lib/NGCP/BulkProcessor/Dao/Trunk/accounting/cdr.pm +++ b/lib/NGCP/BulkProcessor/Dao/Trunk/accounting/cdr.pm @@ -30,6 +30,7 @@ require Exporter; our @ISA = qw(Exporter NGCP::BulkProcessor::SqlRecord); our @EXPORT_OK = qw( gettablename + settablename check_table update_row @@ -52,6 +53,8 @@ our @EXPORT_OK = qw( findby_id get_cdrid_range + + buildrecords_fromrows ); #process_records #delete_ids @@ -204,12 +207,11 @@ sub get_cdrid_range { my $db = &$get_db(); my $table = $db->tableidentifier($tablename); - my $stmt = 'SELECT min(id),max(id) FROM ' . $table . ' WHERE ' . - $db->columnidentifier('id') . ' = ?'; - my @params = ($id); - my $rows = $db->db_get_all_arrayref($stmt,@params); + my $stmt = 'SELECT min(id) as min, max(id) as max FROM ' . $table; + my @params = (); + my $row = $db->db_get_row($stmt,@params); - return $rows; + return $row; } @@ -546,6 +548,8 @@ sub buildrecords_fromrows { $record = __PACKAGE__->new($row); # transformations go here ... + $record->load_relation($load_recursive,'cdr_groups','NGCP::BulkProcessor::Dao::Trunk::accounting::cdr_group::findby_cdrid',undef,$record->{id},$load_recursive); + $record->load_relation($load_recursive,'cdr_tags','NGCP::BulkProcessor::Dao::Trunk::accounting::cdr_tag_data::findby_cdrid',undef,$record->{id},$load_recursive); push @records,$record; } diff --git a/lib/NGCP/BulkProcessor/Dao/Trunk/accounting/cdr_group.pm b/lib/NGCP/BulkProcessor/Dao/Trunk/accounting/cdr_group.pm index 5beba9d..1419466 100644 --- a/lib/NGCP/BulkProcessor/Dao/Trunk/accounting/cdr_group.pm +++ b/lib/NGCP/BulkProcessor/Dao/Trunk/accounting/cdr_group.pm @@ -15,7 +15,7 @@ use NGCP::BulkProcessor::ConnectorPool qw( use NGCP::BulkProcessor::SqlProcessor qw( checktableinfo copy_row - + insert_record ); use NGCP::BulkProcessor::SqlRecord qw(); @@ -23,11 +23,13 @@ require Exporter; our @ISA = qw(Exporter NGCP::BulkProcessor::SqlRecord); our @EXPORT_OK = qw( gettablename + settablename check_table findby_cdrid findby_callid + insert_row ); #findby_callid @@ -92,6 +94,20 @@ sub findby_callid { } +sub insert_row { + + my $db = &$get_db(); + my $xa_db = shift // $db; + + my ($data,$insert_ignore) = @_; + check_table(); + if (insert_record($db,$xa_db,__PACKAGE__,$data,$insert_ignore,$insert_unique_fields)) { + return $xa_db->db_last_insert_id(); + } + return undef; + +} + sub buildrecords_fromrows { my ($rows,$load_recursive) = @_; @@ -119,6 +135,12 @@ sub gettablename { } +sub settablename { + + $tablename = shift; + +} + sub check_table { return checktableinfo($get_db, diff --git a/lib/NGCP/BulkProcessor/Dao/Trunk/accounting/cdr_tag_data.pm b/lib/NGCP/BulkProcessor/Dao/Trunk/accounting/cdr_tag_data.pm index 94302b4..68201d4 100644 --- a/lib/NGCP/BulkProcessor/Dao/Trunk/accounting/cdr_tag_data.pm +++ b/lib/NGCP/BulkProcessor/Dao/Trunk/accounting/cdr_tag_data.pm @@ -16,6 +16,7 @@ use NGCP::BulkProcessor::SqlProcessor qw( checktableinfo copy_row + insert_record ); use NGCP::BulkProcessor::SqlRecord qw(); @@ -23,10 +24,13 @@ require Exporter; our @ISA = qw(Exporter NGCP::BulkProcessor::SqlRecord); our @EXPORT_OK = qw( gettablename + settablename check_table findby_cdrproviderdirectiontag - + findby_cdrid + + insert_row ); my $tablename = 'cdr_tag_data'; @@ -78,6 +82,24 @@ sub findby_cdrproviderdirectiontag { } +sub findby_cdrid { + + my ($xa_db,$cdrid,$load_recursive) = @_; + + check_table(); + my $db = &$get_db(); + $xa_db //= $db; + my $table = $db->tableidentifier($tablename); + + my $stmt = 'SELECT * FROM ' . $table . ' WHERE ' . + $db->columnidentifier('cdr_id') . ' = ?'; + my @params = ($cdrid); + my $rows = $xa_db->db_get_all_arrayref($stmt,@params); + + return buildrecords_fromrows($rows,$load_recursive); + +} + sub findby_callid { my ($xa_db,$callid,$load_recursive) = @_; @@ -96,6 +118,20 @@ sub findby_callid { } +sub insert_row { + + my $db = &$get_db(); + my $xa_db = shift // $db; + + my ($data,$insert_ignore) = @_; + check_table(); + if (insert_record($db,$xa_db,__PACKAGE__,$data,$insert_ignore,$insert_unique_fields)) { + return $xa_db->db_last_insert_id(); + } + return undef; + +} + sub buildrecords_fromrows { my ($rows,$load_recursive) = @_; @@ -123,6 +159,12 @@ sub gettablename { } +sub settablename { + + $tablename = shift; + +} + sub check_table { return checktableinfo($get_db, diff --git a/lib/NGCP/BulkProcessor/FileProcessor.pm b/lib/NGCP/BulkProcessor/FileProcessor.pm index 9bdb4d1..c2eeecb 100644 --- a/lib/NGCP/BulkProcessor/FileProcessor.pm +++ b/lib/NGCP/BulkProcessor/FileProcessor.pm @@ -198,7 +198,7 @@ sub process { notimplementederror((ref $self) . ': ' . 'extractfields class method not implemented',getlogger(__PACKAGE__)); } - $files_code->(sub { + $files_code->($context,sub { my $filename = shift; if (-s $filename > 0) { fileprocessingstarted($filename,getlogger(__PACKAGE__)); @@ -341,7 +341,7 @@ sub _reader { notimplementederror((ref $context->{instance}) . ': ' . 'extractfields class method not implemented',getlogger(__PACKAGE__)); } - $context->{files_code}->(sub { + $context->{files_code}->($context,sub { my $filename = shift; if (-s $filename > 0) { fileprocessingstarted($filename,getlogger(__PACKAGE__));