App-Sqitch
view release on metacpan or search on metacpan
lib/App/Sqitch/Engine/snowflake.pm view on Meta::CPAN
package App::Sqitch::Engine::snowflake;
use 5.010;
use Moo;
use utf8;
use Path::Class;
use DBI;
use Try::Tiny;
use App::Sqitch::X qw(hurl);
use Locale::TextDomain qw(App-Sqitch);
use App::Sqitch::Types qw(DBH ArrayRef HashRef URIDB Str);
extends 'App::Sqitch::Engine';
our $VERSION = 'v1.6.1'; # VERSION
sub key { 'snowflake' }
sub name { 'Snowflake' }
sub driver { 'DBD::ODBC 1.59' }
sub default_client { 'snowsql' }
sub destination {
my $self = shift;
# Just use the target name if it doesn't look like a URI.
return $self->target->name if $self->target->name !~ /:/;
# Use the URI sans passwords.
my $uri = $self->target->uri->clone;
$uri->password(undef) if $uri->password;
for my $key (grep { /pwd/ } $uri->query_params) {
$uri->query_param($key => 'REDACTED');
}
return $uri->as_string;
}
has _snowsql => (
is => 'ro',
isa => ArrayRef,
lazy => 1,
default => sub {
my $self = shift;
my $uri = $self->uri;
my @ret = ( $self->client );
for my $spec (
[ accountname => $self->account ],
[ username => $self->username ],
[ dbname => $uri->dbname ],
[ rolename => $self->role ],
) {
push @ret, "--$spec->[0]" => $spec->[1] if $spec->[1];
}
if (my %vars = $self->variables) {
push @ret => map {; '--variable', "$_=$vars{$_}" } sort keys %vars;
}
push @ret => $self->_client_opts;
return \@ret;
},
);
sub snowsql { @{ shift->_snowsql } }
has _snowcfg => (
is => 'rw',
isa => HashRef,
lazy => 1,
default => sub {
( run in 2.780 seconds using v1.01-cache-2.11-cpan-75ffa21a3d4 )