Commit | Line | Data |
ea2e61bf |
1 | package DBIx::Class::DB; |
2 | |
3 | use 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 | |
9 | sub _get_dbh { |
10 | my ($class) = @_; |
11 | unless ((my $dbh = $class->_dbh) && $dbh->FETCH('Active') && $dbh->ping) { |
12 | $class->_populate_dbh; |
13 | } |
14 | return $class->_dbh; |
15 | } |
16 | |
17 | sub _populate_dbh { |
18 | my ($class) = @_; |
19 | my @info = @{$class->_dbi_connect_info || []}; |
20 | my $pkg = $class->_dbi_connect_package || $class; |
21 | $pkg->_dbh($class->_dbi_connect(@info)); |
22 | } |
23 | |
24 | sub _dbi_connect { |
25 | my ($class, @info) = @_; |
26 | return DBI->connect_cached(@info); |
27 | } |
28 | |
29 | 1; |