| ... | ... |
@@ -1,4 +1,6 @@ |
| 1 | 1 |
0.1629 |
| 2 |
+ renamed auto_filter to filter |
|
| 3 |
+ changed filter method arguments |
|
| 2 | 4 |
deprecated cache_method |
| 3 | 5 |
0.1628 |
| 4 | 6 |
remove DBIx::Custom::Model |
| ... | ... |
@@ -1,6 +1,6 @@ |
| 1 | 1 |
package DBIx::Custom; |
| 2 | 2 |
|
| 3 |
-our $VERSION = '0.1628'; |
|
| 3 |
+our $VERSION = '0.1629'; |
|
| 4 | 4 |
|
| 5 | 5 |
use 5.008001; |
| 6 | 6 |
use strict; |
| ... | ... |
@@ -64,7 +64,7 @@ sub AUTOLOAD {
|
| 64 | 64 |
sub apply_filter {
|
| 65 | 65 |
my $self = shift; |
| 66 | 66 |
|
| 67 |
- $self->{auto_filter} ||= {};
|
|
| 67 |
+ $self->{filter} ||= {};
|
|
| 68 | 68 |
|
| 69 | 69 |
# Table |
| 70 | 70 |
my $table = shift; |
| ... | ... |
@@ -74,13 +74,13 @@ sub apply_filter {
|
| 74 | 74 |
my @cs = @_; |
| 75 | 75 |
|
| 76 | 76 |
# Initialize filters |
| 77 |
- $self->{auto_filter}{out} ||= {};
|
|
| 78 |
- $self->{auto_filter}{in} ||= {};
|
|
| 77 |
+ $self->{filter}{out} ||= {};
|
|
| 78 |
+ $self->{filter}{in} ||= {};
|
|
| 79 | 79 |
|
| 80 | 80 |
# Create auto filters |
| 81 | 81 |
foreach my $c (@cs) {
|
| 82 |
- croak "Usage \$dbi->auto_filter(" .
|
|
| 83 |
- "TABLE, [COLUMN, OUT_FILTER, IN_FILTER], [...])" |
|
| 82 |
+ croak "Usage \$dbi->apply_filter(" .
|
|
| 83 |
+ "TABLE, COLUMN, {in => INFILTER, out => OUTFILTER}, ...)"
|
|
| 84 | 84 |
unless ref $c eq 'ARRAY' && @$c == 3; |
| 85 | 85 |
|
| 86 | 86 |
# Column |
| ... | ... |
@@ -89,35 +89,35 @@ sub apply_filter {
|
| 89 | 89 |
# Bind filter |
| 90 | 90 |
my $out_filter = $c->[1]; |
| 91 | 91 |
if (ref $out_filter eq 'CODE') {
|
| 92 |
- $self->{auto_filter}{out}{$table}{$column}
|
|
| 93 |
- = $out_filter; |
|
| 94 |
- $self->{auto_filter}{out}{$table}{"$table.$column"}
|
|
| 95 |
- = $out_filter; |
|
| 92 |
+ $self->{filter}{out}{$table}{$column}
|
|
| 93 |
+ = $out_filter; |
|
| 94 |
+ $self->{filter}{out}{$table}{"$table.$column"}
|
|
| 95 |
+ = $out_filter; |
|
| 96 | 96 |
} |
| 97 | 97 |
else {
|
| 98 |
- croak qq{"$out_filter" is not registered}
|
|
| 99 |
- unless exists $self->filters->{$out_filter};
|
|
| 100 |
- |
|
| 101 |
- $self->{auto_filter}{out}{$table}{$column}
|
|
| 102 |
- = $self->filters->{$out_filter};
|
|
| 103 |
- $self->{auto_filter}{out}{$table}{"$table.$column"}
|
|
| 104 |
- = $self->filters->{$out_filter};
|
|
| 105 |
- } |
|
| 98 |
+ croak qq{"$out_filter" is not registered}
|
|
| 99 |
+ unless exists $self->filters->{$out_filter};
|
|
| 100 |
+ |
|
| 101 |
+ $self->{filter}{out}{$table}{$column}
|
|
| 102 |
+ = $self->filters->{$out_filter};
|
|
| 103 |
+ $self->{filter}{out}{$table}{"$table.$column"}
|
|
| 104 |
+ = $self->filters->{$out_filter};
|
|
| 105 |
+ } |
|
| 106 | 106 |
|
| 107 | 107 |
# Fetch filter |
| 108 | 108 |
my $in_filter = $c->[2]; |
| 109 | 109 |
if (ref $in_filter eq 'CODE') {
|
| 110 |
- $self->{auto_filter}{in}{$table}{$column}
|
|
| 111 |
- = $in_filter; |
|
| 112 |
- $self->{auto_filter}{in}{$table}{"$table.$column"}
|
|
| 113 |
- = $in_filter; |
|
| 110 |
+ $self->{filter}{in}{$table}{$column}
|
|
| 111 |
+ = $in_filter; |
|
| 112 |
+ $self->{filter}{in}{$table}{"$table.$column"}
|
|
| 113 |
+ = $in_filter; |
|
| 114 | 114 |
} |
| 115 | 115 |
else {
|
| 116 | 116 |
croak qq{"$in_filter" is not registered}
|
| 117 | 117 |
unless exists $self->filters->{$in_filter};
|
| 118 |
- $self->{auto_filter}{in}{$table}{$column}
|
|
| 118 |
+ $self->{filter}{in}{$table}{$column}
|
|
| 119 | 119 |
= $self->filters->{$in_filter};
|
| 120 |
- $self->{auto_filter}{in}{$table}{"$table.$column"}
|
|
| 120 |
+ $self->{filter}{in}{$table}{"$table.$column"}
|
|
| 121 | 121 |
= $self->filters->{$in_filter};
|
| 122 | 122 |
} |
| 123 | 123 |
} |
| ... | ... |
@@ -125,7 +125,7 @@ sub apply_filter {
|
| 125 | 125 |
return $self; |
| 126 | 126 |
} |
| 127 | 127 |
|
| 128 |
- return $self->{auto_filter};
|
|
| 128 |
+ return $self->{filter};
|
|
| 129 | 129 |
} |
| 130 | 130 |
|
| 131 | 131 |
sub helper {
|
| ... | ... |
@@ -306,32 +306,32 @@ sub execute{
|
| 306 | 306 |
unless ref $query; |
| 307 | 307 |
|
| 308 | 308 |
# Auto filter |
| 309 |
- my $auto_filter = {};
|
|
| 309 |
+ my $filter = {};
|
|
| 310 | 310 |
my $tables = $args{table} || [];
|
| 311 | 311 |
$tables = [$tables] |
| 312 | 312 |
unless ref $tables eq 'ARRAY'; |
| 313 | 313 |
foreach my $table (@$tables) {
|
| 314 |
- $auto_filter = {
|
|
| 315 |
- %$auto_filter, |
|
| 316 |
- %{$self->{auto_filter}{in}->{$table} || {}}
|
|
| 314 |
+ $filter = {
|
|
| 315 |
+ %$filter, |
|
| 316 |
+ %{$self->{filter}{out}->{$table} || {}}
|
|
| 317 | 317 |
} |
| 318 | 318 |
} |
| 319 | 319 |
|
| 320 |
- # Filter |
|
| 321 |
- my $filter = $args{filter} || $query->filter || {};
|
|
| 322 |
- foreach my $column (keys %$filter) {
|
|
| 323 |
- my $fname = $filter->{$column};
|
|
| 320 |
+ # Filter argument |
|
| 321 |
+ my $f = $args{filter} || $query->filter || {};
|
|
| 322 |
+ foreach my $column (keys %$f) {
|
|
| 323 |
+ my $fname = $f->{$column};
|
|
| 324 | 324 |
if (!defined $fname) {
|
| 325 |
- $filter->{$column} = undef;
|
|
| 325 |
+ $f->{$column} = undef;
|
|
| 326 | 326 |
} |
| 327 | 327 |
elsif (ref $fname ne 'CODE') {
|
| 328 | 328 |
croak qq{"$fname" is not registered"}
|
| 329 | 329 |
unless exists $self->filters->{$fname};
|
| 330 | 330 |
|
| 331 |
- $filter->{$column} = $self->filters->{$fname};
|
|
| 331 |
+ $f->{$column} = $self->filters->{$fname};
|
|
| 332 | 332 |
} |
| 333 | 333 |
} |
| 334 |
- $filter = {%$auto_filter, %$filter};
|
|
| 334 |
+ $filter = {%$filter, %$f};
|
|
| 335 | 335 |
|
| 336 | 336 |
# Create bind values |
| 337 | 337 |
my $binds = $self->_build_binds($params, $query->columns, $filter); |
| ... | ... |
@@ -346,21 +346,21 @@ sub execute{
|
| 346 | 346 |
if ($sth->{NUM_OF_FIELDS}) {
|
| 347 | 347 |
|
| 348 | 348 |
# Auto in filter |
| 349 |
- my $auto_in_filter = {};
|
|
| 350 |
- foreach my $table (@$tables) {
|
|
| 351 |
- $auto_in_filter = {
|
|
| 352 |
- %$auto_filter, |
|
| 353 |
- %{$self->{auto_filter}{in}{$table} || {}}
|
|
| 354 |
- } |
|
| 355 |
- } |
|
| 356 |
- |
|
| 357 |
- # Result |
|
| 358 |
- my $result = $self->result_class->new( |
|
| 349 |
+ my $in_filter = {};
|
|
| 350 |
+ foreach my $table (@$tables) {
|
|
| 351 |
+ $in_filter = {
|
|
| 352 |
+ %$in_filter, |
|
| 353 |
+ %{$self->{filter}{in}{$table} || {}}
|
|
| 354 |
+ } |
|
| 355 |
+ } |
|
| 356 |
+ |
|
| 357 |
+ # Result |
|
| 358 |
+ my $result = $self->result_class->new( |
|
| 359 | 359 |
sth => $sth, |
| 360 | 360 |
filters => $self->filters, |
| 361 | 361 |
filter_check => $self->filter_check, |
| 362 | 362 |
default_filter => $self->{default_in_filter},
|
| 363 |
- _auto_filter => $auto_in_filter || {}
|
|
| 363 |
+ filter => $in_filter || {}
|
|
| 364 | 364 |
); |
| 365 | 365 |
|
| 366 | 366 |
return $result; |
| ... | ... |
@@ -980,7 +980,7 @@ C<apply_filter> is automatically filter for columns of table. |
| 980 | 980 |
This have effect C<insert>, C<update>, C<delete>. C<select> |
| 981 | 981 |
and L<DBIx::Custom::Result> object. but this has'nt C<execute> method. |
| 982 | 982 |
|
| 983 |
-If you want to have effect <execute< method, use C<table> |
|
| 983 |
+If you want to have effect C<execute()> method, use C<table> |
|
| 984 | 984 |
arguments. |
| 985 | 985 |
|
| 986 | 986 |
$result = $dbi->execute( |
| ... | ... |
@@ -25,7 +25,7 @@ sub filter {
|
| 25 | 25 |
} |
| 26 | 26 |
} |
| 27 | 27 |
|
| 28 |
- $self->{filter} = $filter;
|
|
| 28 |
+ $self->{filter} = {%{$self->filter || {}}, %$filter};
|
|
| 29 | 29 |
|
| 30 | 30 |
return $self; |
| 31 | 31 |
} |
| ... | ... |
@@ -36,11 +36,8 @@ sub filter {
|
| 36 | 36 |
sub fetch {
|
| 37 | 37 |
my $self = shift; |
| 38 | 38 |
|
| 39 |
- # Filters |
|
| 40 |
- my $filters = $self->filters || {};
|
|
| 39 |
+ # Filter |
|
| 41 | 40 |
my $filter = $self->{filter} || {};
|
| 42 |
- my $auto_filter = $self->{_auto_filter} || {};
|
|
| 43 |
- $filter = {%$auto_filter, %$filter};
|
|
| 44 | 41 |
|
| 45 | 42 |
# Fetch |
| 46 | 43 |
my @row = $self->{sth}->fetchrow_array;
|
| ... | ... |
@@ -94,11 +91,8 @@ sub fetch_first {
|
| 94 | 91 |
sub fetch_hash {
|
| 95 | 92 |
my $self = shift; |
| 96 | 93 |
|
| 97 |
- # Filters |
|
| 98 |
- my $filters = $self->filters || {};
|
|
| 94 |
+ # Filter |
|
| 99 | 95 |
my $filter = $self->filter || {};
|
| 100 |
- my $auto_filter = $self->{_auto_filter} || {};
|
|
| 101 |
- $filter = {%$auto_filter, %$filter};
|
|
| 102 | 96 |
|
| 103 | 97 |
# Fetch |
| 104 | 98 |
my $row = $self->{sth}->fetchrow_arrayref;
|