Showing 4 changed files with 48 additions and 40 deletions
+3 -3
lib/DBIx/Custom.pm
... ...
@@ -250,7 +250,7 @@ sub _build_bind_values {
250 250
     my ($self, $query, $params) = @_;
251 251
     my $key_infos           = $query->key_infos;
252 252
     my $bind_filter         = $query->bind_filter;
253
-    my $no_bind_filters_map = $query->_no_bind_filters_map || {};
253
+    my $no_bind_filters     = $query->_no_bind_filters || {};
254 254
     
255 255
     # binding values
256 256
     my @bind_values;
... ...
@@ -284,7 +284,7 @@ sub _build_bind_values {
284 284
                     if (ref $current_key eq 'ARRAY') {
285 285
                         # Filtering 
286 286
                         if ($bind_filter &&
287
-                            !$no_bind_filters_map->{$original_key})
287
+                            !$no_bind_filters->{$original_key})
288 288
                         {
289 289
                             push @bind_values, 
290 290
                                  $bind_filter->($root_params->[$current_key->[0]], 
... ...
@@ -305,7 +305,7 @@ sub _build_bind_values {
305 305
                         
306 306
                         # Filtering
307 307
                         if ($bind_filter &&
308
-                            !$no_bind_filters_map->{$original_key}) 
308
+                            !$no_bind_filters->{$original_key}) 
309 309
                         {
310 310
                             push @bind_values,
311 311
                                  $bind_filter->($root_params->{$current_key},
+19 -9
lib/DBIx/Custom/Query.pm
... ...
@@ -5,24 +5,34 @@ use strict;
5 5
 use warnings;
6 6
 
7 7
 __PACKAGE__->attr([qw/sql key_infos bind_filter fetch_filter sth/]);
8
-__PACKAGE__->attr(_no_bind_filters_map => sub { {} });
8
+__PACKAGE__->attr(_no_bind_filters => sub { {} });
9 9
 __PACKAGE__->attr(no_fetch_filters => sub { [] });
10 10
 
11
-__PACKAGE__->attr('no_bind_filters', trigger => sub {
12
-    my $self = shift;
13
-    my $no_bind_filters = $self->no_bind_filters || [];
14
-    my %no_bind_filters_map = map {$_ => 1} @{$no_bind_filters};
15
-    $self->_no_bind_filters_map(\%no_bind_filters_map);
16
-});
17
-
18 11
 sub new {
19 12
     my $self = shift->SUPER::new(@_);
20 13
     
21
-    Object::Simple::Util->init_attrs($self, 'no_bind_filters');
14
+    $self->no_bind_filters($self->{no_bind_filters})
15
+      if $self->{no_bind_filters};
22 16
     
23 17
     return $self;
24 18
 }
25 19
 
20
+sub no_bind_filters {
21
+    my $self = shift;
22
+    
23
+    if (@_) {
24
+        $self->{no_bind_filters} = $_[0];
25
+        
26
+        my %no_bind_filters = map { $_ => 1 } @{$self->{no_bind_filters}};
27
+        
28
+        $self->_no_bind_filters(\%no_bind_filters);
29
+        
30
+        return $self;
31
+    }
32
+    
33
+    return $self->{no_bind_filters};
34
+}
35
+
26 36
 =head1 NAME
27 37
 
28 38
 DBIx::Custom::Query - DBIx::Custom query
+22 -24
lib/DBIx/Custom/Result.pm
... ...
@@ -5,27 +5,35 @@ use strict;
5 5
 use warnings;
6 6
 use Carp 'croak';
7 7
 
8
-use Object::Simple::Util;
9
-
10 8
 __PACKAGE__->attr([qw/_dbi sth fetch_filter/]);
11
-__PACKAGE__->attr(_no_fetch_filters_map => sub { {} });
12
-
13
-__PACKAGE__->attr('no_fetch_filters', trigger => sub {
14
-    my $self = shift;
15
-    my $no_fetch_filters = $self->no_fetch_filters || [];
16
-    my %no_fetch_filters_map = map {$_ => 1} @{$no_fetch_filters};
17
-    $self->_no_fetch_filters_map(\%no_fetch_filters_map);
18
-});
9
+__PACKAGE__->attr(_no_fetch_filters => sub { {} });
19 10
 
20 11
 sub new {
21 12
     my $self = shift->SUPER::new(@_);
22 13
     
23
-    Object::Simple::Util->init_attrs($self, 'no_fetch_filters');
14
+    $self->no_fetch_filters($self->{no_fetch_filters})
15
+      if exists $self->{no_fetch_filters};
24 16
     
25 17
     return $self;
26 18
 }
27 19
 
28
-# Fetch (array)
20
+sub no_fetch_filters {
21
+    my $self = shift;
22
+    
23
+    if (@_) {
24
+        
25
+        $self->{no_fetch_filters} = $_[0];
26
+        
27
+        my %no_fetch_filters = map {$_ => 1} @{$self->{no_fetch_filters}};
28
+        
29
+        $self->_no_fetch_filters(\%no_fetch_filters);
30
+        
31
+        return $self;
32
+    }
33
+    
34
+    return $self->{no_fetch_filters};
35
+}
36
+
29 37
 sub fetch {
30 38
     my ($self, $type) = @_;
31 39
     my $sth = $self->sth;
... ...
@@ -42,7 +50,7 @@ sub fetch {
42 50
         my $keys  = $sth->{NAME_lc};
43 51
         my $types = $sth->{TYPE};
44 52
         for (my $i = 0; $i < @$keys; $i++) {
45
-            next if $self->_no_fetch_filters_map->{$keys->[$i]};
53
+            next if $self->_no_fetch_filters->{$keys->[$i]};
46 54
             $row->[$i]= $fetch_filter->($row->[$i], $keys->[$i], $self->_dbi,
47 55
                                         {type => $types->[$i], sth => $sth, index => $i});
48 56
         }
... ...
@@ -50,7 +58,6 @@ sub fetch {
50 58
     return wantarray ? @$row : $row;
51 59
 }
52 60
 
53
-# Fetch (hash)
54 61
 sub fetch_hash {
55 62
     my $self = shift;
56 63
     my $sth = $self->sth;
... ...
@@ -70,7 +77,7 @@ sub fetch_hash {
70 77
     if ($fetch_filter) {
71 78
         my $types = $sth->{TYPE};
72 79
         for (my $i = 0; $i < @$keys; $i++) {
73
-            if ($self->_no_fetch_filters_map->{$keys->[$i]}) {
80
+            if ($self->_no_fetch_filters->{$keys->[$i]}) {
74 81
                 $row_hash->{$keys->[$i]} = $row->[$i];
75 82
             }
76 83
             else {
... ...
@@ -90,7 +97,6 @@ sub fetch_hash {
90 97
     return wantarray ? %$row_hash : $row_hash;
91 98
 }
92 99
 
93
-# Fetch only first (array)
94 100
 sub fetch_first {
95 101
     my $self = shift;
96 102
     
... ...
@@ -106,7 +112,6 @@ sub fetch_first {
106 112
     return wantarray ? @$row : $row;
107 113
 }
108 114
 
109
-# Fetch only first (hash)
110 115
 sub fetch_hash_first {
111 116
     my $self = shift;
112 117
     
... ...
@@ -122,7 +127,6 @@ sub fetch_hash_first {
122 127
     return wantarray ? %$row : $row;
123 128
 }
124 129
 
125
-# Fetch multi rows (array)
126 130
 sub fetch_rows {
127 131
     my ($self, $count) = @_;
128 132
     
... ...
@@ -144,7 +148,6 @@ sub fetch_rows {
144 148
     return wantarray ? @$rows : $rows;
145 149
 }
146 150
 
147
-# Fetch multi rows (hash)
148 151
 sub fetch_hash_rows {
149 152
     my ($self, $count) = @_;
150 153
     
... ...
@@ -166,8 +169,6 @@ sub fetch_hash_rows {
166 169
     return wantarray ? @$rows : $rows;
167 170
 }
168 171
 
169
-
170
-# Fetch all (array)
171 172
 sub fetch_all {
172 173
     my $self = shift;
173 174
     
... ...
@@ -178,7 +179,6 @@ sub fetch_all {
178 179
     return wantarray ? @$rows : $rows;
179 180
 }
180 181
 
181
-# Fetch all (hash)
182 182
 sub fetch_hash_all {
183 183
     my $self = shift;
184 184
     
... ...
@@ -189,10 +189,8 @@ sub fetch_hash_all {
189 189
     return wantarray ? @$rows : $rows;
190 190
 }
191 191
 
192
-# Finish
193 192
 sub finish { shift->sth->finish }
194 193
 
195
-# Error
196 194
 sub error { 
197 195
     my $self = shift;
198 196
     my $sth  = $self->sth;
+4 -4
t/dbix-custom-query.t
... ...
@@ -27,11 +27,11 @@ $query = DBIx::Custom::Query->new(
27 27
 is($query->sql, 'a', "$test : sql");
28 28
 is($query->key_infos, 'b', "$test : key_infos ");
29 29
 is($query->bind_filter, 'c', "$test : bind_filter");
30
-is_deeply(scalar $query->no_bind_filters, [qw/d e/], "$test : no_bind_filters");
31
-is_deeply(scalar $query->_no_bind_filters_map, {d => 1, e => 1}, "$test : _no_bind_filters_map");
32
-is_deeply(scalar $query->no_fetch_filters, [qw/g h/], "$test : no_fetch_filters");
30
+is_deeply($query->no_bind_filters, [qw/d e/], "$test : no_bind_filters");
31
+is_deeply($query->_no_bind_filters, {d => 1, e => 1}, "$test : _no_bind_filters");
32
+is_deeply($query->no_fetch_filters, [qw/g h/], "$test : no_fetch_filters");
33 33
 is($query->sth, 'e', "$test : sth");
34 34
 
35 35
 $query->no_bind_filters(undef);
36
-is_deeply(scalar $query->_no_bind_filters_map, {}, "$test _no_bind_filters_map undef value");
36
+is_deeply(scalar $query->_no_bind_filters, {}, "$test _no_bind_filters undef value");
37 37