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 )