Commit | Line | Data |
ea2e61bf |
1 | package DBIx::Class::DB; |
2 | |
3 | use base qw/Class::Data::Inheritable/; |
604d9f38 |
4 | use DBI; |
ea2e61bf |
5 | |
6 | __PACKAGE__->mk_classdata('_dbi_connect_info'); |
7 | __PACKAGE__->mk_classdata('_dbi_connect_package'); |
8 | __PACKAGE__->mk_classdata('_dbh'); |
9 | |
10 | sub _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 | |
19 | sub _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 | |
26 | sub _dbi_connect { |
27 | my ($class, @info) = @_; |
604d9f38 |
28 | return DBI->connect_cached(@info); |
8fe001e1 |
29 | } |
30 | |
31 | sub connection { |
32 | my ($class, @info) = @_; |
33 | $class->_dbi_connect_package($class); |
34 | $class->_dbi_connect_info(\@info); |
ea2e61bf |
35 | } |
36 | |
37 | 1; |