--- nfo/perl/libs/libdb.pm 2003/02/09 04:47:58 1.9 +++ nfo/perl/libs/libdb.pm 2003/04/08 23:07:57 1.10 @@ -1,7 +1,11 @@ ## -------------------------------------------------------------------------------- -## $Id: libdb.pm,v 1.9 2003/02/09 04:47:58 joko Exp $ +## $Id: libdb.pm,v 1.10 2003/04/08 23:07:57 joko Exp $ ## -------------------------------------------------------------------------------- ## $Log: libdb.pm,v $ +## Revision 1.10 2003/04/08 23:07:57 joko +## renamed core database helper functions +## moved 'hash2Sql' and 'quotesql' to shortcuts::db +## ## Revision 1.9 2003/02/09 04:47:58 joko ## + minor fix ## @@ -41,12 +45,10 @@ require Exporter; our @ISA = qw( Exporter ); our @EXPORT_OK = qw( - testDsn hash2Sql - SQL_INSERT SQL_UPDATE + testDsn connectTarget disconnectTarget sendSql dbNow - getDbNameByDsn sqlDbAction createSqlDb dropSqlDb - quotesql + dsn2dbname sqlDbAction createSqlDb dropSqlDb testDsnForTables testDbServer ); @@ -55,9 +57,7 @@ use DBI; use Data::Dumper; -use constant SQL_INSERT => 10; -use constant SQL_UPDATE => 11; -use constant SQL_SELECT => 12; +use shortcuts::db qw( dsn2dbname ); my $dbmeta_ref_cache; @@ -88,51 +88,6 @@ } -# TODO: handle usage of "$crit" in an abstract way somehow -sub hash2Sql { - - my $table = shift; - my $hash = shift; - my $mode = shift; - my $crit = shift; - - my $sql; - $mode = SQL_SELECT if ($mode eq 'SQL_SELECT' || $mode eq 'SELECT'); - $mode = SQL_INSERT if ($mode eq 'SQL_INSERT' || $mode eq 'INSERT'); - $mode = SQL_UPDATE if ($mode eq 'SQL_UPDATE' || $mode eq 'UPDATE'); - - if ($mode == SQL_SELECT) { - $sql = "SELECT #fields# FROM $table WHERE $crit"; - } elsif ($mode == SQL_INSERT) { - $sql = "INSERT INTO $table (#fields#) VALUES (#values#)"; - } elsif ($mode == SQL_UPDATE) { - $sql = "UPDATE $table SET #fields-values# WHERE $crit"; - } - - my (@fields, @values); - foreach my $key (keys %{$hash}) { - push @fields, $key; - push @values, $hash->{$key}; - } - # quote each element - map { if (defined $_) { $_ = "'$_'" } else { $_ = "null" } } @values; - - my $fields = join(', ', @fields); - my $values = join(', ', @values); - my $fields_values = ''; - my $fc = 0; - foreach (@fields) { - $fields_values .= $_ . '=' . $values[$fc] . ', '; - $fc++; - } - $fields_values = substr($fields_values, 0, -2); - - $sql =~ s/#fields#/$fields/; - $sql =~ s/#values#/$values/; - $sql =~ s/#fields-values#/$fields_values/; - - return $sql; -} sub patch_dbmeta { @@ -206,13 +161,6 @@ } -sub getDbNameByDsn { - my $dsn = shift; - $dsn =~ m/database=(.+?);/; - my $database_name = $1; - return $database_name; -} - sub sqlDbAction { my $dsn = shift; $dsn =~ s/database=.+?;//; @@ -236,7 +184,7 @@ sub createSqlDb { my $dsn = shift; - my $dbname = getDbNameByDsn($dsn); + my $dbname = dsn2dbname($dsn); print " - creating rdbms-database $dbname ($dsn) ..."; my $sql; $sql = "CREATE DATABASE $dbname;"; @@ -251,21 +199,13 @@ sub dropSqlDb { my $dsn = shift; - my $dbname = getDbNameByDsn($dsn); + my $dbname = dsn2dbname($dsn); print " - dropping database $dbname", "\n"; my $sql; $sql = "DROP DATABASE $dbname;"; sqlDbAction($dsn, $sql); } -sub quotesql { - my $string = shift; - if ($string) { - $string =~ s/'/\\'/g; - } - return $string; -} - sub testDsnForTables { my $dsn = shift; connectTarget($dsn);