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 )