added objectindex tests for search and add
[dbsrgits/DBIx-Class.git] / lib / DBIx / Class / DB.pm
CommitLineData
ea2e61bf 1package DBIx::Class::DB;
2
3use base qw/Class::Data::Inheritable/;
604d9f38 4use DBI;
ea2e61bf 5
6__PACKAGE__->mk_classdata('_dbi_connect_info');
7__PACKAGE__->mk_classdata('_dbi_connect_package');
8__PACKAGE__->mk_classdata('_dbh');
9
10sub _get_dbh {
11 my ($class) = @_;
8fe001e1 12 my $dbh;
13 unless (($dbh = $class->_dbh) && $dbh->FETCH('Active') && $dbh->ping) {
ea2e61bf 14 $class->_populate_dbh;
15 }
16 return $class->_dbh;
17}
18
19sub _populate_dbh {
20 my ($class) = @_;
21 my @info = @{$class->_dbi_connect_info || []};
22 my $pkg = $class->_dbi_connect_package || $class;
23 $pkg->_dbh($class->_dbi_connect(@info));
24}
25
26sub _dbi_connect {
27 my ($class, @info) = @_;
604d9f38 28 return DBI->connect_cached(@info);
8fe001e1 29}
30
31sub connection {
32 my ($class, @info) = @_;
33 $class->_dbi_connect_package($class);
34 $class->_dbi_connect_info(\@info);
ea2e61bf 35}
36
371;