Catalyst-Model-DBIx-Connector

 view release on metacpan or  search on metacpan

lib/Catalyst/Model/DBIx/Connector.pm  view on Meta::CPAN

package Catalyst::Model::DBIx::Connector;

use namespace::autoclean;
use DBIx::Connector;
use Moose;

extends qw( Catalyst::Model );

our $VERSION = '0.01';


has dsn       => ( is => 'ro', isa => 'Str', required => 1 );
has username  => ( is => 'ro', isa => 'Str' );
has password  => ( is => 'ro', isa => 'Str' );
has options   => ( is => 'ro', isa => 'HashRef' );
has connector => ( is => 'ro', isa => 'DBIx::Connector', lazy_build => 1, handles => [qw( dbh )] );


sub _build_connector {
  my ( $self ) = @_;

  DBIx::Connector->new(
    map { $self->$_ } qw( dsn username password options ) );
}


__PACKAGE__->meta->make_immutable;

1
__END__

=pod

=head1 NAME

Catalyst::Model::DBIx::Connector - Catalyst model base class for DBI connections using DBIx::Connector

=head1 SYNOPSIS

  # in MyApp.pm

  __PACKAGE__->config(
    'Model::MyModel' => {
      dsn      => 'dbi:Oracle:ORCL',
      username => 'scott',             # optional
      password => 'tiger',             # optional
      options  => { AutoCommit => 0 }, # optional
    },
  );


  # in MyApp/Model/MyModel.pm

  package MyApp::Model::MyModel;

  use namespace::autoclean;
  use Moose;
  extends qw( Catalyst::Model::DBIx::Connector );

  sub model_method {
    my ( $self ) = @_;

    my $dbh = $self->dbh;

    my $sth = $dbh->prepare( '...' );
    $sth->execute;

    # ...

    $dbh->disconnect;
  }

=head1 DESCRIPTION

Catalyst::Model::DBIx::Connector is a simple base class that



( run in 1.822 second using v1.01-cache-2.11-cpan-39bf76dae61 )