... | ... |
@@ -1,6 +1,6 @@ |
1 | 1 |
package DBIx::Custom; |
2 | 2 |
|
3 |
-our $VERSION = '0.1623'; |
|
3 |
+our $VERSION = '0.1624'; |
|
4 | 4 |
|
5 | 5 |
use 5.008001; |
6 | 6 |
use strict; |
... | ... |
@@ -393,11 +393,11 @@ sub execute{ |
393 | 393 |
|
394 | 394 |
# Result |
395 | 395 |
my $result = $self->result_class->new( |
396 |
- sth => $sth, |
|
397 |
- filters => $self->filters, |
|
398 |
- filter_check => $self->filter_check, |
|
399 |
- _auto_filter => $auto_fetch_filter || {}, |
|
400 |
- _default_filter => $self->default_fetch_filter |
|
396 |
+ sth => $sth, |
|
397 |
+ filters => $self->filters, |
|
398 |
+ filter_check => $self->filter_check, |
|
399 |
+ default_filter => $self->default_fetch_filter, |
|
400 |
+ _auto_filter => $auto_fetch_filter || {} |
|
401 | 401 |
); |
402 | 402 |
|
403 | 403 |
return $result; |
... | ... |
@@ -11,46 +11,55 @@ __PACKAGE__->attr([qw/filter_check filters sth/]); |
11 | 11 |
|
12 | 12 |
sub default_filter { |
13 | 13 |
my $self = shift; |
14 |
- my $fname = $_[0]; |
|
15 | 14 |
|
16 |
- if (@_ && !$fname) { |
|
17 |
- $self->{_default_filter} = undef; |
|
18 |
- } |
|
19 |
- else { |
|
20 |
- croak qq{"$fname" is not registered} |
|
21 |
- unless exists $self->filters->{$fname}; |
|
22 |
- |
|
23 |
- $self->{_default_filter} = $self->filters->{$fname}; |
|
15 |
+ if (@_) { |
|
16 |
+ my $fname = $_[0]; |
|
17 |
+ if (@_ && !$fname) { |
|
18 |
+ $self->{default_filter} = undef; |
|
19 |
+ } |
|
20 |
+ else { |
|
21 |
+ croak qq{"$fname" is not registered} |
|
22 |
+ unless exists $self->filters->{$fname}; |
|
23 |
+ |
|
24 |
+ $self->{default_filter} = $self->filters->{$fname}; |
|
25 |
+ } |
|
26 |
+ |
|
27 |
+ return $self; |
|
24 | 28 |
} |
25 | 29 |
|
26 |
- return $self; |
|
30 |
+ return $self->{default_filter}; |
|
27 | 31 |
} |
28 | 32 |
|
29 | 33 |
sub filter { |
30 | 34 |
my $self = shift; |
31 |
- my $filter = ref $_[0] eq 'HASH' ? $_[0] : {@_}; |
|
32 |
- |
|
33 |
- foreach my $column (keys %$filter) { |
|
34 |
- my $fname = $filter->{$column}; |
|
35 |
- unless (ref $fname eq 'CODE') { |
|
36 |
- croak qq{"$fname" is not registered"} |
|
37 |
- unless exists $self->filters->{$fname}; |
|
38 |
- |
|
39 |
- $filter->{$column} = $self->filters->{$fname}; |
|
35 |
+ |
|
36 |
+ if (@_) { |
|
37 |
+ my $filter = ref $_[0] eq 'HASH' ? $_[0] : {@_}; |
|
38 |
+ |
|
39 |
+ foreach my $column (keys %$filter) { |
|
40 |
+ my $fname = $filter->{$column}; |
|
41 |
+ unless (ref $fname eq 'CODE') { |
|
42 |
+ croak qq{"$fname" is not registered"} |
|
43 |
+ unless exists $self->filters->{$fname}; |
|
44 |
+ |
|
45 |
+ $filter->{$column} = $self->filters->{$fname}; |
|
46 |
+ } |
|
40 | 47 |
} |
48 |
+ |
|
49 |
+ $self->{filter} = $filter; |
|
50 |
+ |
|
51 |
+ return $self; |
|
41 | 52 |
} |
42 | 53 |
|
43 |
- $self->{_filter} = $filter; |
|
44 |
- |
|
45 |
- return $self; |
|
54 |
+ return $self->{filter}; |
|
46 | 55 |
} |
47 | 56 |
|
48 | 57 |
sub fetch { |
49 | 58 |
my $self = shift; |
50 | 59 |
|
51 | 60 |
# Filters |
52 |
- my $filters = $self->{filters} || {}; |
|
53 |
- my $filter = $self->{_filter} || {}; |
|
61 |
+ my $filters = $self->filters || {}; |
|
62 |
+ my $filter = $self->{filter} || {}; |
|
54 | 63 |
my $auto_filter = $self->{_auto_filter} || {}; |
55 | 64 |
$filter = {%$auto_filter, %$filter}; |
56 | 65 |
|
... | ... |
@@ -68,7 +77,7 @@ sub fetch { |
68 | 77 |
my $column = $columns->[$i]; |
69 | 78 |
my $f = exists $filter->{$column} |
70 | 79 |
? $filter->{$column} |
71 |
- : $self->{_default_filter}; |
|
80 |
+ : $self->default_filter; |
|
72 | 81 |
|
73 | 82 |
# Filtering |
74 | 83 |
$row[$i] = $f->($row[$i]) if $f; |
... | ... |
@@ -107,8 +116,8 @@ sub fetch_hash { |
107 | 116 |
my $self = shift; |
108 | 117 |
|
109 | 118 |
# Filters |
110 |
- my $filters = $self->{filters} || {}; |
|
111 |
- my $filter = $self->{_filter} || {}; |
|
119 |
+ my $filters = $self->filters || {}; |
|
120 |
+ my $filter = $self->filter || {}; |
|
112 | 121 |
my $auto_filter = $self->{_auto_filter} || {}; |
113 | 122 |
$filter = {%$auto_filter, %$filter}; |
114 | 123 |
|
... | ... |
@@ -127,7 +136,7 @@ sub fetch_hash { |
127 | 136 |
my $column = $columns->[$i]; |
128 | 137 |
my $f = exists $filter->{$column} |
129 | 138 |
? $filter->{$column} |
130 |
- : $self->{_default_filter}; |
|
139 |
+ : $self->default_filter; |
|
131 | 140 |
|
132 | 141 |
# Filtering |
133 | 142 |
$row_hash->{$column} = $f ? $f->($row->[$i]) : $row->[$i]; |
... | ... |
@@ -256,7 +265,6 @@ Fetch row into hash. |
256 | 265 |
my $first_author = $rows->[0]{author}; |
257 | 266 |
my $second_title = $rows->[1]{title}; |
258 | 267 |
my $second_author = $rows->[1]{author}; |
259 |
- |
|
260 | 268 |
} |
261 | 269 |
|
262 | 270 |
# Fetch all rows into array of hash |
... | ... |
@@ -295,6 +303,7 @@ and implements the following new ones. |
295 | 303 |
|
296 | 304 |
=head2 C<(deprecated) default_filter> |
297 | 305 |
|
306 |
+ my $default_filter = $result->default_filter; |
|
298 | 307 |
$result = $result->default_filter($filter); |
299 | 308 |
|
300 | 309 |
Default filter when a row is fetched. |