App-Sqitch
view release on metacpan or search on metacpan
lib/App/Sqitch/Engine/mysql.pm view on Meta::CPAN
package App::Sqitch::Engine::mysql;
use 5.010;
use strict;
use warnings;
use utf8;
use Try::Tiny;
use App::Sqitch::X qw(hurl);
use Locale::TextDomain qw(App-Sqitch);
use App::Sqitch::Plan::Change;
use Path::Class;
use Moo;
use App::Sqitch::Types qw(DBH URIDB ArrayRef Bool Str HashRef);
use namespace::autoclean;
use List::MoreUtils qw(firstidx);
extends 'App::Sqitch::Engine';
our $VERSION = 'v1.6.1'; # VERSION
has uri => (
is => 'ro',
isa => URIDB,
lazy => 1,
default => sub {
my $self = shift;
my $uri = $self->SUPER::uri;
$uri->host($ENV{MYSQL_HOST}) if !$uri->host && $ENV{MYSQL_HOST};
$uri->port($ENV{MYSQL_TCP_PORT}) if !$uri->_port && $ENV{MYSQL_TCP_PORT};
return $uri;
},
);
has registry_uri => (
is => 'ro',
isa => URIDB,
lazy => 1,
default => sub {
my $self = shift;
my $uri = $self->uri->clone;
$uri->dbname($self->registry);
return $uri;
},
);
sub registry_destination {
my $uri = shift->registry_uri;
if ($uri->password) {
$uri = $uri->clone;
$uri->password(undef);
}
return $uri->as_string;
}
has _mycnf => (
is => 'rw',
isa => HashRef,
default => sub {
eval 'require MySQL::Config; 1' or return {};
return scalar MySQL::Config::parse_defaults('my', [qw(client mysql)]);
},
);
sub _def_user { $_[0]->_mycnf->{user} || $_[0]->sqitch->sysuser }
sub _def_pass { $ENV{MYSQL_PWD} || shift->_mycnf->{password} }
sub _dsn {
( run in 1.967 second using v1.01-cache-2.11-cpan-5837b0d9d2c )