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) = @_; |
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 | |
18 | sub _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 | |
25 | sub _dbi_connect { |
26 | my ($class, @info) = @_; |
8fe001e1 |
27 | return DBI->connect(@info); |
28 | } |
29 | |
30 | sub connection { |
31 | my ($class, @info) = @_; |
32 | $class->_dbi_connect_package($class); |
33 | $class->_dbi_connect_info(\@info); |
ea2e61bf |
34 | } |
35 | |
36 | 1; |