package NGCP::BulkProcessor::Dao::Trunk::kamailio::acc; use strict; ## no critic use NGCP::BulkProcessor::Logging qw( getlogger rowinserted ); use NGCP::BulkProcessor::ConnectorPool qw( get_kamailio_db ); use NGCP::BulkProcessor::SqlProcessor qw( checktableinfo insert_record copy_row ); use NGCP::BulkProcessor::SqlRecord qw(); require Exporter; our @ISA = qw(Exporter NGCP::BulkProcessor::SqlRecord); our @EXPORT_OK = qw( gettablename check_table insert_row count count_callids ); my $tablename = 'acc'; my $get_db = \&get_kamailio_db; my $expected_fieldnames = [ "id", "method", "from_tag", "to_tag", "callid", "sip_code", "sip_reason", "time", "time_hires", "src_leg", "dst_leg", "dst_user", "dst_ouser", "dst_domain", "src_user", "src_domain", ]; my $indexes = {}; my $insert_unique_fields = []; sub new { my $class = shift; my $self = NGCP::BulkProcessor::SqlRecord->new($class,$get_db, $tablename,$expected_fieldnames,$indexes); copy_row($self,shift,$expected_fieldnames); return $self; } sub insert_row { my $db = &$get_db(); my $xa_db = shift // $db; #if ('HASH' eq ref $_[0]) { 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 count { my ($xa_db) = @_; check_table(); my $db = &$get_db(); $xa_db //= $db; my $table = $db->tableidentifier($tablename); my $stmt = 'SELECT COUNT(*) FROM ' . $table; return $db->db_get_value($stmt); } sub count_callids { my ($xa_db) = @_; check_table(); my $db = &$get_db(); $xa_db //= $db; my $table = $db->tableidentifier($tablename); my $stmt = 'SELECT COUNT(DISTINCT ' . $db->columnidentifier('callid') . ') FROM ' . $table; return $db->db_get_value($stmt); } sub buildrecords_fromrows { my ($rows,$load_recursive) = @_; my @records = (); my $record; if (defined $rows and ref $rows eq 'ARRAY') { foreach my $row (@$rows) { $record = __PACKAGE__->new($row); # transformations go here ... push @records,$record; } } return \@records; } sub gettablename { return $tablename; } sub check_table { return checktableinfo($get_db, __PACKAGE__,$tablename, $expected_fieldnames, $indexes); } 1;