App-DBBrowser
view release on metacpan or search on metacpan
lib/App/DBBrowser/DB/mysql.pm view on Meta::CPAN
package # hide from PAUSE
App::DBBrowser::DB::mysql;
use warnings;
use strict;
use 5.016;
use DBD::mysql 4.041 qw(); # mysql_enable_utf8mb4 requires 4.041 or greater
use DBI qw();
use App::DBBrowser::Credentials;
sub new {
my ( $class, $info, $opt ) = @_;
my $sf = {
i => $info,
o => $opt
};
bless $sf, $class;
}
sub get_db_driver {
my ( $sf ) = @_;
return 'mysql';
}
sub get_db_handle {
my ( $sf, $db ) = @_;
my $cred = App::DBBrowser::Credentials->new( $sf->{i}, $sf->{o} );
my $dsn = "dbi:mysql:dbname=$db";
my $show_sofar = 'DB '. $db;
my $host = $cred->get_login( 'host', $show_sofar );
if ( defined $host ) {
$show_sofar .= "\n" . 'Host: ' . $host;
$dsn .= ";host=$host" if length $host;
}
my $port = $cred->get_login( 'port', $show_sofar );
if ( defined $port ) {
$show_sofar .= "\n" . 'Port: ' . $port;
$dsn .= ";port=$port" if length $port;
}
my $user = $cred->get_login( 'user', $show_sofar );
$show_sofar .= "\n" . 'User: ' . $user if defined $user;
my $passwd = $cred->get_login( 'pass', $show_sofar );
my $dbh = DBI->connect( $dsn, $user, $passwd, {
PrintError => 0,
RaiseError => 1,
AutoCommit => 1,
ShowErrorStatement => 1,
%{$sf->{o}{connect_attr}//{}}, ##
} );
return $dbh;
}
sub get_databases {
my ( $sf ) = @_;
return \@ARGV if @ARGV;
#my $ax = App::DBBrowser::Auxil->new( {}, {}, {} );
#my $file_mysql_dbs = sprintf $sf->{i}{db_cache_file_fmt}, $sf->{i}{plugin}; ##
#my $cache = $ax->read_json( $file_mysql_dbs ) // {};
#if ( ! $sf->{i}{search} && @{$cache->{user_databases}//[]} ) {
# return $cache->{user_databases}, $cache->{system_databases};
#}
( run in 0.591 second using v1.01-cache-2.11-cpan-39bf76dae61 )