refactoring

optimize imports
reformat source code
remove unused cpu and memory log functionality
This commit is contained in:
Milan
2018-08-29 00:10:15 +02:00
parent c37c71f29e
commit 05b1251c1a
81 changed files with 9242 additions and 9962 deletions

View File

@@ -1,118 +1,120 @@
use warnings "all";
use strict;
#use DBI;
#use Apache::DBI;
use DBD::mysql;
use DBD::mysql();
package db;
package db;
use Data::Dumper;
require Exporter;
our @ISA = qw(Exporter);
our @ISA = qw(Exporter);
our @EXPORT_OK = qw(
connect disconnect
get insert put
next_id get_max_id
shift_date_by_hours shift_datetime_by_minutes
get_columns get_columns_hash
$write
$read
connect disconnect
get insert put
next_id get_max_id
shift_date_by_hours shift_datetime_by_minutes
get_columns get_columns_hash
$write
$read
);
our %EXPORT_TAGS = ( 'all' => [ @EXPORT_OK ] );
our %EXPORT_TAGS = ( 'all' => [@EXPORT_OK] );
#debug settings
our $debug_read=0;
our $debug_write=0;
our $debug_read = 0;
our $debug_write = 0;
#database control
our $read=1;
our $write=1;
our $read = 1;
our $write = 1;
# connect to database
sub connect{
my $options=shift;
my $request=shift;
sub connect {
my $options = shift;
my $request = shift;
return $request->{connection} if ((defined $request) && (defined $request->{connection}));
return $request->{connection} if ( ( defined $request ) && ( defined $request->{connection} ) );
my $access_options=$options->{access};
my $access_options = $options->{access};
my $hostname =$access_options->{hostname};
my $port =$access_options->{port};
my $database =$access_options->{database};
my $username =$access_options->{username};
my $password =$access_options->{password};
my $hostname = $access_options->{hostname};
my $port = $access_options->{port};
my $database = $access_options->{database};
my $username = $access_options->{username};
my $password = $access_options->{password};
if ((defined $access_options->{write}) && ($access_options->{write}eq'1')){
$username =$access_options->{username_write};
$password =$access_options->{password_write};
if ( ( defined $access_options->{write} ) && ( $access_options->{write} eq '1' ) ) {
$username = $access_options->{username_write};
$password = $access_options->{password_write};
}
my $dbh=undef;
my $dbh = undef;
my $dsn = "DBI:mysql:database=$database;host=$hostname;port=$port";
# if ($db::utf8dbi eq '1'){
# use UTF8DBI;
# $dbh = UTF8DBI->connect( $dsn,$username,$password) || die "Database connection not made: $DBI::errstr"; # \nfor $dsn, $username
# }else{
# use DBI;
$dbh = DBI->connect( $dsn,$username,$password,{mysql_enable_utf8 => 1}) || die "could not connect to database: $DBI::errstr"; # \nfor $dsn, $username
# }
# if ($db::utf8dbi eq '1'){
# use UTF8DBI;
# $dbh = UTF8DBI->connect( $dsn,$username,$password) || die "Database connection not made: $DBI::errstr"; # \nfor $dsn, $username
# }else{
# use DBI;
$dbh = DBI->connect( $dsn, $username, $password, { mysql_enable_utf8 => 1 } )
|| die "could not connect to database: $DBI::errstr"; # \nfor $dsn, $username
# }
#print STDERR "db connect $username\n" if ($debug_read==1);
#print STDERR "db connect $username\n";
#print STDERR "db connect $username\n";
$dbh->{RaiseError} = 1;
$dbh->{'mysql_enable_utf8'} = 1;
put($dbh,"set character set utf8");
put($dbh,"set names utf8");
put($dbh,"set time_zone='".$options->{date}->{time_zone}."'");
put( $dbh, "set character set utf8" );
put( $dbh, "set names utf8" );
put( $dbh, "set time_zone='" . $options->{date}->{time_zone} . "'" );
$request->{connection}=$dbh;
$request->{connection} = $dbh;
return $dbh;
}
sub disconnect{
my $request=shift;
my $dbh=$request->{connection};
sub disconnect {
my $request = shift;
my $dbh = $request->{connection};
$dbh->disconnect;
delete $request->{connection};
}
# get all database entries of an sql query (as list of hashs)
sub get{
my $dbh=shift;
my $sql=shift;
my $bind_values=shift;
sub get {
my $dbh = shift;
my $sql = shift;
my $bind_values = shift;
if ($debug_read==1){
print STDERR $sql."\n";
print STDERR Dumper($bind_values)."\n" if defined $bind_values;
}
my $sth = $dbh->prepare( $sql );
if ((defined $bind_values)&&(ref($bind_values)eq'ARRAY')){
# print STDERR Dumper($bind_values)."\n";
my $result = $sth->execute(@$bind_values);
unless ($result){
print STDERR $sql."\n";
die "db: $DBI::errstr $sql" if ($read==1);
}
}else{
$sth->execute() || die "db: $DBI::errstr $sql" if ($read==1);
if ( $debug_read == 1 ) {
print STDERR $sql . "\n";
print STDERR Dumper($bind_values) . "\n" if defined $bind_values;
}
my @results=();
while ( my $row=$sth->fetchrow_hashref){
my $result={};
foreach my $key (keys %$row){
$result->{$key}=$row->{$key};
}
push @results, $result;
}
my $sth = $dbh->prepare($sql);
if ( ( defined $bind_values ) && ( ref($bind_values) eq 'ARRAY' ) ) {
if ($debug_read==1){
print STDERR Dumper($results[0])."\n" if (@results==1);
print STDERR @results."\n" if (@results!=1);
# print STDERR Dumper($bind_values)."\n";
my $result = $sth->execute(@$bind_values);
unless ($result) {
print STDERR $sql . "\n";
die "db: $DBI::errstr $sql" if ( $read == 1 );
}
} else {
$sth->execute() || die "db: $DBI::errstr $sql" if ( $read == 1 );
}
my @results = ();
while ( my $row = $sth->fetchrow_hashref ) {
my $result = {};
foreach my $key ( keys %$row ) {
$result->{$key} = $row->{$key};
}
push @results, $result;
}
if ( $debug_read == 1 ) {
print STDERR Dumper( $results[0] ) . "\n" if ( @results == 1 );
print STDERR @results . "\n" if ( @results != 1 );
}
$sth->finish;
@@ -120,157 +122,157 @@ sub get{
}
# get list of table columns
sub get_columns{
my $dbh=shift;
my $table=shift;
sub get_columns {
my $dbh = shift;
my $table = shift;
my $columns=db::get($dbh, 'select column_name from information_schema.columns where table_name=?',[$table]);
my @result=map {$_->{column_name}} (@$columns);
my $columns = db::get( $dbh, 'select column_name from information_schema.columns where table_name=?', [$table] );
my @result = map { $_->{column_name} } (@$columns);
return \@result;
}
# get hash with table columns as keys
sub get_columns_hash{
my $dbh=shift;
my $table=shift;
sub get_columns_hash {
my $dbh = shift;
my $table = shift;
my $columns=db::get_columns($dbh, $table);
my $result={};
for my $column (@$columns){
$result->{$column}=1;
}
my $columns = db::get_columns( $dbh, $table );
my $result = {};
for my $column (@$columns) {
$result->{$column} = 1;
}
return $result;
}
# insert an entry into database (select from where)
sub insert_old{
my $dbh=shift;
my $tablename=shift;
my $entry=shift;
my $do_not_quote=shift;
sub insert_old {
my $dbh = shift;
my $tablename = shift;
my $entry = shift;
my $do_not_quote = shift;
my $keys =join(",", map {$_} (keys %$entry));
my $values =undef;
if (defined $do_not_quote && $do_not_quote ne ''){
$values =join("\n,", map {$entry->{$_}} (keys %$entry));
}else{
$values =join("\n,", map {$dbh->quote($entry->{$_})} (keys %$entry));
my $keys = join( ",", map { $_ } ( keys %$entry ) );
my $values = undef;
if ( defined $do_not_quote && $do_not_quote ne '' ) {
$values = join( "\n,", map { $entry->{$_} } ( keys %$entry ) );
} else {
$values = join( "\n,", map { $dbh->quote( $entry->{$_} ) } ( keys %$entry ) );
}
my $sql ="insert into $tablename \n ($keys) \n values ($values);\n";
print STDERR $sql."\n" if ($debug_write==1);
put($dbh,$sql);
my $sql = "insert into $tablename \n ($keys) \n values ($values);\n";
print STDERR $sql . "\n" if ( $debug_write == 1 );
put( $dbh, $sql );
}
#returns last inserted id
sub insert{
my $dbh=shift;
my $tablename=shift;
my $entry=shift;
# my $do_not_quote=shift;
sub insert {
my $dbh = shift;
my $tablename = shift;
my $entry = shift;
my $keys =join(",", map {$_} (keys %$entry));
my $values =join(",", map {'?'} (keys %$entry));
my @bind_values =map {$entry->{$_}} (keys %$entry);
# my $do_not_quote=shift;
my $sql ="insert into $tablename \n ($keys) \n values ($values);\n";
my $keys = join( ",", map { $_ } ( keys %$entry ) );
my $values = join( ",", map { '?' } ( keys %$entry ) );
my @bind_values = map { $entry->{$_} } ( keys %$entry );
if ($debug_write==1){
print STDERR $sql."\n";
print STDERR Dumper(\@bind_values)."\n" if (@bind_values);
}
my $sql = "insert into $tablename \n ($keys) \n values ($values);\n";
put($dbh, $sql, \@bind_values);
my $result=get($dbh, 'SELECT LAST_INSERT_ID() id;');
return $result->[0]->{id} if $result->[0]->{id}>0;
if ( $debug_write == 1 ) {
print STDERR $sql . "\n";
print STDERR Dumper( \@bind_values ) . "\n" if (@bind_values);
}
put( $dbh, $sql, \@bind_values );
my $result = get( $dbh, 'SELECT LAST_INSERT_ID() id;' );
return $result->[0]->{id} if $result->[0]->{id} > 0;
return undef;
}
# execute a modifying database command (update,insert,...)
sub put{
my $dbh=shift;
my $sql=shift;
my $bind_values=shift;
# execute a modifying database command (update,insert,...)
sub put {
my $dbh = shift;
my $sql = shift;
my $bind_values = shift;
if ($debug_write==1){
print STDERR $sql."\n";
print STDERR Dumper($bind_values)."\n" if defined $bind_values;
}
if ( $debug_write == 1 ) {
print STDERR $sql . "\n";
print STDERR Dumper($bind_values) . "\n" if defined $bind_values;
}
my $sth = $dbh->prepare( $sql );
if ($write==1){
if ((defined $bind_values)&&(ref($bind_values)eq'ARRAY')){
my $sth = $dbh->prepare($sql);
if ( $write == 1 ) {
if ( ( defined $bind_values ) && ( ref($bind_values) eq 'ARRAY' ) ) {
$sth->execute(@$bind_values);
}else{
} else {
$sth->execute();
}
};
}
$sth->finish;
print STDERR "1\n" if ($debug_write==1);
print STDERR "1\n" if ( $debug_write == 1 );
my $result=get($dbh, 'SELECT ROW_COUNT() changes;');
return $result->[0]->{changes} if $result->[0]->{changes}>0;
my $result = get( $dbh, 'SELECT ROW_COUNT() changes;' );
return $result->[0]->{changes} if $result->[0]->{changes} > 0;
return undef;
}
sub quote{
my $dbh=shift;
my $sql=shift;
$sql=~s/\_/\\\_/g;
sub quote {
my $dbh = shift;
my $sql = shift;
$sql =~ s/\_/\\\_/g;
return $dbh->quote($sql);
}
#subtract hours, deprecated(!)
sub shift_date_by_hours{
my $dbh=shift;
my $date=shift;
my $offset=shift;
sub shift_date_by_hours {
my $dbh = shift;
my $date = shift;
my $offset = shift;
my $query='select date(? - INTERVAL ? HOUR) date';
my $bind_values=[$date,$offset];
my $results=db::get($dbh, $query, $bind_values);
my $query = 'select date(? - INTERVAL ? HOUR) date';
my $bind_values = [ $date, $offset ];
my $results = db::get( $dbh, $query, $bind_values );
return $results->[0]->{date};
}
#add minutes, deprecated(!)
sub shift_datetime_by_minutes{
my $dbh=shift;
my $datetime=shift;
my $offset=shift;
sub shift_datetime_by_minutes {
my $dbh = shift;
my $datetime = shift;
my $offset = shift;
my $query="select ? + INTERVAL ? MINUTE date";
my $bind_values=[$datetime,$offset];
my $results=db::get($dbh, $query, $bind_values);
my $query = "select ? + INTERVAL ? MINUTE date";
my $bind_values = [ $datetime, $offset ];
my $results = db::get( $dbh, $query, $bind_values );
return $results->[0]->{date};
}
# get next free id of a database table
sub next_id{
my $dbh=shift;
my $table=shift;
sub next_id {
my $dbh = shift;
my $table = shift;
my $query=qq{
my $query = qq{
select max(id) id
from $table
where 1
};
my $results=get($dbh,$query);
return $results->[0]->{id}+1;
my $results = get( $dbh, $query );
return $results->[0]->{id} + 1;
}
# get max id from table
sub get_max_id{
my $dbh=shift;
my $table=shift;
sub get_max_id {
my $dbh = shift;
my $table = shift;
my $query=qq{
my $query = qq{
select max(id) id
from $table
where 1
};
my $results=get($dbh,$query);
my $results = get( $dbh, $query );
return $results->[0]->{id};
}