File Coverage

blib/lib/Apache/Session/Browseable/Store/DBI.pm
Criterion Covered Total %
statement 37 37 100.0
branch 4 8 50.0
condition n/a
subroutine 4 4 100.0
pod 0 2 0.0
total 45 51 88.2


line stmt bran cond sub pod time code
1             package Apache::Session::Browseable::Store::DBI;
2              
3 4     4   22050 use strict;
  4         9  
  4         121  
4 4     4   461 use Apache::Session::Store::DBI;
  4         717  
  4         2369  
5             our @ISA = qw(Apache::Session::Store::DBI);
6             our $VERSION = 1.3.11;
7              
8             sub insert {
9 29     29 0 1460 my ( $self, $session ) = @_;
10              
11 29         182 $self->connection($session);
12              
13 29         331 local $self->{dbh}->{RaiseError} = 1;
14              
15             my $index =
16             ref( $session->{args}->{Index} )
17             ? $session->{args}->{Index}
18 29 50       868 : [ split /\s+/, $session->{args}->{Index} ];
19              
20 29 50       164 if ( !defined $self->{insert_sth} ) {
21             $self->{insert_sth} =
22             $self->{dbh}->prepare_cached( "INSERT INTO $self->{table_name} ("
23 29         169 . join( ',', 'id', 'a_session', map { s/'/''/g; $_ } @$index )
  56         170  
  56         494  
24             . ') VALUES ('
25             . join( ',', ('?') x ( 2 + @$index ) )
26             . ')' );
27             }
28              
29 29         10866 $self->{insert_sth}->bind_param( 1, $session->{data}->{_session_id} );
30 29         201 $self->{insert_sth}->bind_param( 2, $session->{serialized} );
31 29         81 my $i = 3;
32 29         105 foreach my $f (@$index) {
33 56         412 $self->{insert_sth}->bind_param( $i, $session->{data}->{$f} );
34 56         215 $i++;
35             }
36              
37 29         13035 $self->{insert_sth}->execute;
38              
39 29         822 $self->{insert_sth}->finish;
40             }
41              
42             sub update {
43 29     29 0 1162 my $self = shift;
44 29         73 my $session = shift;
45              
46 29         167 $self->connection($session);
47              
48 29         288 local $self->{dbh}->{RaiseError} = 1;
49              
50             my $index =
51             ref( $session->{args}->{Index} )
52             ? $session->{args}->{Index}
53 29 50       843 : [ split /\s+/, $session->{args}->{Index} ];
54              
55 29 50       147 if ( !defined $self->{update_sth} ) {
56             $self->{update_sth} =
57 29         303 $self->{dbh}->prepare_cached( "UPDATE $self->{table_name} SET "
58             . join( ' = ?, ', 'a_session', @$index )
59             . ' = ? WHERE id = ?' );
60             }
61              
62 29         3972 $self->{update_sth}->bind_param( 1, $session->{serialized} );
63 29         89 my $i = 2;
64 29         111 foreach my $f (@$index) {
65 56         309 $self->{update_sth}->bind_param( $i, $session->{data}->{$f} );
66 56         195 $i++;
67             }
68 29         211 $self->{update_sth}->bind_param( $i, $session->{data}->{_session_id} );
69              
70 29         873 $self->{update_sth}->execute;
71              
72 29         495 $self->{update_sth}->finish;
73             }
74              
75             1;