Acrux-DBI
view release on metacpan or search on metacpan
lib/Acrux/DBI/Dump.pm view on Meta::CPAN
This class implements all methods from L<Mojo::Base> and implements
the following new ones
=head2 from_data
$dump = $dump->from_data;
$dump = $dump->from_data('main');
$dump = $dump->from_data('main', 'file_name');
Extract dump data from a file in the DATA section of a class with
L<Mojo::Loader/"data_section">, defaults to using the caller class and
L</"name">.
__DATA__
@@ schema
-- # up
CREATE TABLE `pets` (`pet` TEXT);
INSERT INTO `pets` VALUES ('cat');
INSERT INTO `pets` VALUES ('dog');
lib/Acrux/DBI/Dump.pm view on Meta::CPAN
=head1 LICENSE
This program is distributed under the terms of the Artistic License Version 2.0
See the C<LICENSE> file or L<https://opensource.org/license/artistic-2-0> for details
=cut
use Mojo::Base -base;
use Mojo::Loader qw/data_section/;
use Mojo::File qw/path/;
use constant {
DELIMITER => ';',
TAG_DEFAULT => 'main',
};
has name => 'schema';
has 'dbi';
has 'pool' => sub {{}};
lib/Acrux/DBI/Dump.pm view on Meta::CPAN
$is_new = 0;
$buf = '';
$delimiter = DELIMITER; # flush delimiter to default
}
# make new block
if ($is_new) {
push @{$pool->{$tag} //= []}, $buf if length($tag) and $buf !~ /^\s*$/s;
$is_new = 0;
$buf = '';
} else { # Or add cur chunk to section
$buf .= $chunk;
}
}
# add buf line to block
push @{$pool->{$tag} //= []}, $buf if length($tag) and $buf !~ /^\s*$/s;
return $self;
}
sub from_data {
my $self = shift;
my $class = shift;
my $name = shift;
return $self->from_string(data_section($class //= caller, $name // $self->name));
}
sub from_file {
my $self = shift;
my $file = shift;
return $self->from_string(path($file)->slurp('UTF-8'));
}
sub poke {
my $self = shift;
my $tag = shift || TAG_DEFAULT;
my $sqls = $self->pool->{$tag} || [];
( run in 2.650 seconds using v1.01-cache-2.11-cpan-39bf76dae61 )