File Coverage

blib/lib/Pinwheel/Database.pm
Criterion Covered Total %
statement 39 39 100.0
branch 24 26 92.3
condition n/a
subroutine 17 17 100.0
pod 11 13 84.6
total 91 95 95.7


line stmt bran cond sub pod time code
1             package Pinwheel::Database;
2              
3 9     9   109242 use strict;
  9         25  
  9         804  
4 9     9   260 use warnings;
  9         2342  
  9         273  
5              
6 9     9   48 use Exporter;
  9         41  
  9         634  
7 9     9   66 use Carp;
  9         14  
  9         9039  
8              
9             our @ISA = qw(Exporter);
10             our @EXPORT_OK = qw(
11             set_backend set_connection connect finish_all
12             prepare do describe tables
13             without_foreign_keys dbhostname
14             fetchone_tables fetchall_tables
15             );
16              
17             our $backend;
18              
19              
20              
21             sub set_backend
22             {
23 2     2 0 11 $backend = $_[0];
24             }
25              
26             sub set_connection
27             {
28 2     2 1 9071 my ($class);
29              
30 2 50       17 croak "Missing database connection details." unless (defined $_[0]);
31              
32 2         6 $class = $_[0];
33 2         116 $class =~ s/dbi:(.)(.+?):.*/Pinwheel::Database::\u$1\L$2/;
34            
35 2 50       192 eval "require $class" or croak "Failed to load database backend: $class";
36 2         22 set_backend( $class->new( @_ ) );
37             }
38              
39             sub connect
40             {
41 8 100   8 1 1906 croak "No database configured" unless ($backend);
42 7         35 return $backend->connect(@_);
43             }
44              
45             sub disconnect
46             {
47 4 100   4 1 1642 return $backend->disconnect(@_) if ($backend);
48             }
49              
50             sub finish_all
51             {
52 25 100   25 1 861 return $backend->finish_all(@_) if ($backend);
53             }
54              
55             sub do
56             {
57 30 100   30 0 1881106 croak "No database configured" unless ($backend);
58 29         549 return $backend->do(@_);
59             }
60              
61             sub without_foreign_keys(&)
62             {
63 12 100   12 1 1076 croak "No database configured" unless ($backend);
64 11         75 return $backend->without_foreign_keys(@_);
65             }
66              
67             sub prepare
68             {
69 163 100   163 1 121470 croak "No database configured" unless ($backend);
70 162         1724 return $backend->prepare(@_);
71             }
72              
73             sub describe
74             {
75 28 100   28 1 3600 croak "No database configured" unless ($backend);
76 27         236 return $backend->describe(@_);
77             }
78              
79             sub tables
80             {
81 8 100   8 1 2160 croak "No database configured" unless ($backend);
82 7         50 return $backend->tables(@_);
83             }
84              
85             sub dbhostname
86             {
87 3 100   3 1 2280 croak "No database configured" unless ($backend);
88 2         15 return $backend->dbhostname(@_);
89             }
90              
91             sub fetchone_tables
92             {
93 6 100   6 1 1919 croak "No database configured" unless ($backend);
94 5         36 return $backend->fetchone_tables(@_);
95             }
96              
97             sub fetchall_tables
98             {
99 5 100   5 1 12637 croak "No database configured" unless ($backend);
100 4         69 return $backend->fetchall_tables(@_);
101             }
102              
103              
104             1;
105              
106             __DATA__