App-Sqitch
view release on metacpan or search on metacpan
lib/App/Sqitch/Engine/sqlite.pm view on Meta::CPAN
package App::Sqitch::Engine::sqlite;
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(URIDB DBH ArrayRef);
use namespace::autoclean;
extends 'App::Sqitch::Engine';
our $VERSION = 'v1.6.1'; # VERSION
has registry_uri => (
is => 'ro',
isa => URIDB,
lazy => 1,
default => sub {
my $self = shift;
my $uri = $self->uri->clone;
my $reg = $self->registry;
if ( file($reg)->is_absolute ) {
# Just use an absolute path.
$uri->dbname($reg);
} elsif (my @segs = $uri->path_segments) {
# Use the same name, but replace $name.$ext with $reg.$ext.
my $bn = file( $segs[-1] )->basename;
if ($reg =~ /[.]/ || $bn !~ /[.]/) {
$segs[-1] =~ s/\Q$bn\E$/$reg/;
} else {
my ($b, $e) = split /[.]/, $bn, 2;
$segs[-1] =~ s/\Q$b\E[.]$e$/$reg.$e/;
}
$uri->path_segments(@segs);
} else {
# No known path, so no name.
$uri->dbname(undef);
}
return $uri;
},
);
sub registry_destination {
my $uri = shift->registry_uri;
if ($uri->password) {
$uri = $uri->clone;
$uri->password(undef);
}
return $uri->as_string;
}
sub key { 'sqlite' }
sub name { 'SQLite' }
sub driver { 'DBD::SQLite 1.37' }
sub default_client { 'sqlite3' }
sub _dsn { shift->registry_uri->dbi_dsn }
has dbh => (
is => 'rw',
( run in 0.541 second using v1.01-cache-2.11-cpan-5837b0d9d2c )