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