package NGCP::BulkProcessor::Dao::Trunk::billing::domains; use strict; ## no critic use NGCP::BulkProcessor::Logging qw( getlogger rowinserted ); use NGCP::BulkProcessor::ConnectorPool qw( get_billing_db ); use NGCP::BulkProcessor::SqlProcessor qw( checktableinfo copy_row insert_record ); use NGCP::BulkProcessor::SqlRecord qw(); require Exporter; our @ISA = qw(Exporter NGCP::BulkProcessor::SqlRecord); our @EXPORT_OK = qw( gettablename check_table insert_row findby_domain findby_id findall ); my $tablename = 'domains'; my $get_db = \&get_billing_db; my $expected_fieldnames = [ 'id', '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 findall { my ($load_recursive) = @_; check_table(); my $db = &$get_db(); my $table = $db->tableidentifier($tablename); my $stmt = 'SELECT * FROM ' . $table; my $rows = $db->db_get_all_arrayref($stmt); return buildrecords_fromrows($rows,$load_recursive); } sub findby_domain { my ($domain,$load_recursive) = @_; check_table(); my $db = &$get_db(); my $table = $db->tableidentifier($tablename); my $stmt = 'SELECT * FROM ' . $table . ' WHERE ' . $db->columnidentifier('domain') . ' = ?'; my @params = ($domain); my $rows = $db->db_get_all_arrayref($stmt,@params); return buildrecords_fromrows($rows,$load_recursive)->[0]; } sub findby_id { my ($id,$load_recursive) = @_; check_table(); my $db = &$get_db(); my $table = $db->tableidentifier($tablename); my $stmt = 'SELECT * FROM ' . $table . ' WHERE ' . $db->columnidentifier('id') . ' = ?'; my @params = ($id); my $rows = $db->db_get_all_arrayref($stmt,@params); return buildrecords_fromrows($rows,$load_recursive)->[0]; } 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(); } } else { my %params = @_; my ($domain) = @params{qw/ domain /}; if ($xa_db->db_do('INSERT INTO ' . $db->tableidentifier($tablename) . ' (' . $db->columnidentifier('domain') . ') VALUES (' . '?)', $domain, )) { rowinserted($db,$tablename,getlogger(__PACKAGE__)); return $xa_db->db_last_insert_id(); } } return undef; } 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;