File Coverage

blib/lib/DBIx/Roles/SQLAbstract.pm
Criterion Covered Total %
statement 21 32 65.6
branch 2 6 33.3
condition n/a
subroutine 7 10 70.0
pod 4 6 66.6
total 34 54 62.9


line stmt bran cond sub pod time code
1             # $Id: SQLAbstract.pm,v 1.2 2005/11/29 11:55:01 dk Exp $
2              
3             package DBIx::Roles::SQLAbstract;
4 1     1   4 use strict;
  1         2  
  1         29  
5 1     1   5 use vars qw(%defaults $VERSION);
  1         1  
  1         39  
6 1     1   2806 use SQL::Abstract;
  1         41643  
  1         519  
7              
8             $VERSION = '1.00';
9              
10             # SQL::Abstract parameters to new()
11             %defaults = (
12             case => 'textbook',
13             cmp => '=',
14             logic => 'or',
15             convert => 0,
16             bindtype => 'normal',
17             quote_char => '',
18             name_sep => undef,
19             );
20              
21             sub initialize
22             {
23 3     3 0 18 return [], \%defaults, qw(insert select update delete);
24             }
25              
26             sub insert
27             {
28 1     1 1 3 my ( $self, $sql) = @_;
29 1         5 my ( $query, @bindval) = abstract('insert', @_);
30 1         1383 $self-> do( $query, {}, @bindval);
31             }
32              
33             sub select
34             {
35 0     0 1 0 my ( $self, $sql) = @_;
36 0         0 my ( $query, @bindval) = abstract('select', @_);
37 0         0 my $sth = $self-> prepare( $query);
38 0 0       0 $sth-> execute( @bindval) if $sth;
39 0         0 return $sth;
40             }
41              
42             sub update
43             {
44 0     0 1 0 my ( $self, $sql) = @_;
45 0         0 my ( $query, @bindval) = abstract('update', @_);
46 0         0 $self-> do( $query, {}, @bindval);
47             }
48              
49             sub delete
50             {
51 0     0 1 0 my ( $self, $sql) = @_;
52 0         0 my ( $query, @bindval) = abstract('delete', @_);
53 0         0 $self-> do( $query, {}, @bindval);
54             }
55              
56             sub abstract
57             {
58 1     1 0 4 my ( $method, $self, $sql, @params) = @_;
59              
60             # auto-instantiate, if any
61 7         26 $sql->[0] = SQL::Abstract-> new(
62 1 50       8 map { $_ => $self->{attr}->{$_} } keys %defaults)
63             unless $sql->[0];
64 1         151 $sql = $sql->[0];
65              
66 1         6 return $sql-> $method( @params);
67             }
68              
69             sub STORE
70             {
71 17     17   46 my ( $self, $sql, $key, $val) = @_;
72              
73             # delete the SQL::Abstract object if settings have changed
74 17 50       47 undef $sql->[0] if exists $defaults{$key};
75              
76 17         51 return $self-> super( $key, $val);
77             }
78              
79             1;
80              
81             __DATA__