Amon2-Setup-Flavor-Teng
view release on metacpan or search on metacpan
lib/Amon2/Setup/Flavor/TengWithoutLoader.pm view on Meta::CPAN
use strict;
use warnings;
use utf8;
package Amon2::Setup::Flavor::TengWithoutLoader;
use parent qw(Amon2::Setup::Flavor);
sub run {
my $self = shift;
$self->write_file('lib/<<PATH>>.pm', <<'...');
package <% $module %>;
use strict;
use warnings;
use utf8;
use parent qw/Amon2/;
use 5.008001;
__PACKAGE__->load_plugin(qw/DBI/);
# initialize database
use DBI;
sub setup_schema {
my $self = shift;
my $dbh = $self->dbh();
my $driver_name = $dbh->{Driver}->{Name};
my $fname = lc("sql/${driver_name}.sql");
open my $fh, '<:encoding(UTF-8)', $fname or die "$fname: $!";
my $source = do { local $/; <$fh> };
for my $stmt (split /;/, $source) {
next unless $stmt =~ /\S/;
$dbh->do($stmt) or die $dbh->errstr();
}
}
use <% $module %>::DB;
sub db {
my $self = shift;
if ( !defined $self->{db} ) {
my $conf = $self->config->{'DBI'}
or die "missing configuration for 'DBI'";
my $dbh = DBI->connect(@{$conf});
$self->{db} = <% $module %>::DB->new(
dbh => $dbh,
);
}
return $self->{db};
}
1;
...
$self->write_file('lib/<<PATH>>/DB.pm', <<'...');
package <% $module %>::DB;
use parent qw(Teng);
1;
...
$self->write_file('lib/<<PATH>>/DB/Schema.pm', <<'...');
package <% $module %>::DB::Schema;
use Teng::Schema::Declare;
table {
name 'sessions';
pk 'id';
columns qw(id session_data);
};
1;
...
$self->write_file('t/09_teng_without_loader.t', <<'...');
use strict;
use warnings;
use Test::More;
( run in 1.511 second using v1.01-cache-2.11-cpan-8f98c5d2c55 )