Fey-DBIManager
view release on metacpan or search on metacpan
lib/Fey/DBIManager/Source.pm view on Meta::CPAN
version 0.16
=head1 SYNOPSIS
my $source = Fey::DBIManager::Source->new( dbh => $dbh );
my $dbh = $source->dbh();
=head1 DESCRIPTION
A C<Fey::DBIManager::Source> object provides a wrapper around a C<DBI>
handle which does things like ensure that handles are recreated
properly after a fork.
A source can be created from an existing DBI handle, or from
parameters such as the dsn and authentication info.
=head1 METHODS
This class provides the following methods:
=head2 Fey::DBIManager::Source->new(...)
Creates a new C<Fey::DBIManager::Source> object. This method accepts a
number of parameters.
=over 4
=item * name
The name of the source. This defaults to "default", which cooperates
nicely with L<Fey::DBIManager>.
=item * dbh
An already connected C<DBI> handle. Even if this is given, you still
need to provide the relevant connection parameters such as "dsn".
=item * dsn
A C<DBI> DSN string. This is required.
=item * username
=item * password
The username and password for the source. These both default to an
empty string.
=item * attributes
A hash reference of attributes to be passed to C<< DBI->connect()
>>. Note that some attributes are set for all handles. See L<REQUIRED
ATTRIBUTES> for more details. This attribute is optional.
=item * post_connect
This is an optional subroutine reference which will be called after a
handle is created with C<< DBI->connect() >>. This is a handy way to
set connection info or to set driver-specific attributes like
"mysql_enable_utf8" or "pg_auto_escape".
=item * auto_refresh
A boolean value. The default is true, which means that whenever you
call C<< $source->dbh() >>, the source ensures that the database
handle is still active. See L<HANDLE FRESHNESS> for more details.
=item * ping_interval
An integer value representing the minimum number of seconds between
successive pings of the database handle. See L<HANDLE FRESHNESS> for
more details. The default value is 60 (seconds). A value of 0 causes
the source to ping the database handle each time you call
C<< $source->dbh() >>.
If you explicitly set this value to C<undef>, then the database will never be
pinged.
Note that if "auto_refresh" is false, this attribute is meaningless.
=back
=head2 $source->dbh()
Returns a database handle for the source. If you did not pass a handle
to the constructor, this may create a new handle. If C<auto_refresh>
is true, this may cause a new handle to be created. See L<HANDLE
FRESHNESS> for more details.
=head2 $source->dsn()
=head2 $source->username()
=head2 $source->password()
=head2 $source->post_connect()
=head2 $source->auto_connect()
These methods simply return the value of the specified attribute.
=head2 $source->attributes()
This method returns attributes hash reference for the source. This
will be a combination of any attributes passed to the constructor plus
the L<REQUIRED ATTRIBUTES>.
=head2 $source->allows_nested_transactions()
Returns a boolean indicating whether or not the database to which the
source connects supports nested transactions. It does this by trying
to issue two calls to C<< $dbh->begin_work() >> followed by two calls
to C<< $dbh->rollback() >> (in an eval block).
=head2 $source->clone(...)
Returns a new source which is a clone of the original. If no name is provided,
it is created as "Clone of <original name>". The cloned source I<does not>
share the original's database handle.
( run in 1.478 second using v1.01-cache-2.11-cpan-0d23b851a93 )