File Coverage

lib/DBIx/ActiveRecord/Arel/Query/Insert.pm
Criterion Covered Total %
statement 24 26 92.3
branch 1 2 50.0
condition n/a
subroutine 7 7 100.0
pod 0 3 0.0
total 32 38 84.2


line stmt bran cond sub pod time code
1             package DBIx::ActiveRecord::Arel::Query::Insert;
2 2     2   10 use strict;
  2         4  
  2         69  
3 2     2   9 use warnings;
  2         4  
  2         49  
4 2     2   10 use base 'DBIx::ActiveRecord::Arel::Query';
  2         3  
  2         683  
5              
6             sub new {
7 1     1 0 2 my ($self, $main, $hash, $columns) = @_;
8 1         9 my $o = $self->SUPER::new($main);
9 1         6 $o->{hash} = $hash;
10 1         2 $o->{columns} = $columns;
11 1         3 $o;
12             }
13              
14 1     1 0 4 sub columns {shift->{columns}}
15 3     3 0 9 sub hash {shift->{hash}}
16              
17             sub _to_sql {
18 1     1   2 my ($self) = @_;
19              
20 1 50       3 my @keys = $self->columns ? grep {exists $self->hash->{$_}} @{$self->columns} : keys %{$self->hash};
  0         0  
  0         0  
  1         2  
21 1         7 my $sql = 'INSERT INTO '.$self->main->table.' ('.join(', ', @keys).') VALUES ('.join(', ', map {'?'} @keys).')';
  2         5  
22 1         2 $self->{binds} = [map {$self->hash->{$_}} @keys];
  2         3  
23 1         3 $sql;
24             }
25              
26             1;