| ... | ... |
@@ -77,62 +77,68 @@ sub AUTOLOAD {
|
| 77 | 77 |
sub auto_filter {
|
| 78 | 78 |
my $self = shift; |
| 79 | 79 |
|
| 80 |
+ $self->{auto_filter} ||= {};
|
|
| 81 |
+ |
|
| 80 | 82 |
# Table |
| 81 | 83 |
my $table = shift; |
| 82 | 84 |
|
| 83 |
- # Column infomations |
|
| 84 |
- my @cs = @_; |
|
| 85 |
- |
|
| 86 |
- # Initialize filters |
|
| 87 |
- $self->{_auto_bind_filter} ||= {};
|
|
| 88 |
- $self->{_auto_fetch_filter} ||= {};
|
|
| 89 |
- |
|
| 90 |
- # Create auto filters |
|
| 91 |
- foreach my $c (@cs) {
|
|
| 92 |
- croak "Usage \$dbi->auto_filter(" .
|
|
| 93 |
- "TABLE, [COLUMN, BIND_FILTER, FETCH_FILTER], [...])" |
|
| 94 |
- unless ref $c eq 'ARRAY' && @$c == 3; |
|
| 85 |
+ if (@_) {
|
|
| 86 |
+ # Column infomations |
|
| 87 |
+ my @cs = @_; |
|
| 95 | 88 |
|
| 96 |
- # Column |
|
| 97 |
- my $column = $c->[0]; |
|
| 89 |
+ # Initialize filters |
|
| 90 |
+ $self->{auto_filter}{bind} ||= {};
|
|
| 91 |
+ $self->{auto_filter}{fetch} ||= {};
|
|
| 98 | 92 |
|
| 99 |
- # Bind filter |
|
| 100 |
- my $bind_filter = $c->[1]; |
|
| 101 |
- if (ref $bind_filter eq 'CODE') {
|
|
| 102 |
- $self->{_auto_bind_filter}{$table}{$column}
|
|
| 103 |
- = $bind_filter; |
|
| 104 |
- $self->{_auto_bind_filter}{$table}{"$table.$column"}
|
|
| 105 |
- = $bind_filter; |
|
| 93 |
+ # Create auto filters |
|
| 94 |
+ foreach my $c (@cs) {
|
|
| 95 |
+ croak "Usage \$dbi->auto_filter(" .
|
|
| 96 |
+ "TABLE, [COLUMN, BIND_FILTER, FETCH_FILTER], [...])" |
|
| 97 |
+ unless ref $c eq 'ARRAY' && @$c == 3; |
|
| 98 |
+ |
|
| 99 |
+ # Column |
|
| 100 |
+ my $column = $c->[0]; |
|
| 101 |
+ |
|
| 102 |
+ # Bind filter |
|
| 103 |
+ my $bind_filter = $c->[1]; |
|
| 104 |
+ if (ref $bind_filter eq 'CODE') {
|
|
| 105 |
+ $self->{auto_filter}{bind}{$table}{$column}
|
|
| 106 |
+ = $bind_filter; |
|
| 107 |
+ $self->{auto_filter}{bind}{$table}{"$table.$column"}
|
|
| 108 |
+ = $bind_filter; |
|
| 109 |
+ } |
|
| 110 |
+ else {
|
|
| 111 |
+ croak qq{"$bind_filter" is not registered}
|
|
| 112 |
+ unless exists $self->filters->{$bind_filter};
|
|
| 113 |
+ |
|
| 114 |
+ $self->{auto_filter}{bind}{$table}{$column}
|
|
| 115 |
+ = $self->filters->{$bind_filter};
|
|
| 116 |
+ $self->{auto_filter}{bind}{$table}{"$table.$column"}
|
|
| 117 |
+ = $self->filters->{$bind_filter};
|
|
| 118 |
+ } |
|
| 119 |
+ |
|
| 120 |
+ # Fetch filter |
|
| 121 |
+ my $fetch_filter = $c->[2]; |
|
| 122 |
+ if (ref $fetch_filter eq 'CODE') {
|
|
| 123 |
+ $self->{auto_filter}{fetch}{$table}{$column}
|
|
| 124 |
+ = $fetch_filter; |
|
| 125 |
+ $self->{auto_filter}{fetch}{$table}{"$table.$column"}
|
|
| 126 |
+ = $fetch_filter; |
|
| 127 |
+ } |
|
| 128 |
+ else {
|
|
| 129 |
+ croak qq{"$fetch_filter" is not registered}
|
|
| 130 |
+ unless exists $self->filters->{$fetch_filter};
|
|
| 131 |
+ $self->{auto_filter}{fetch}{$table}{$column}
|
|
| 132 |
+ = $self->filters->{$fetch_filter};
|
|
| 133 |
+ $self->{auto_filter}{fetch}{$table}{"$table.$column"}
|
|
| 134 |
+ = $self->filters->{$fetch_filter};
|
|
| 135 |
+ } |
|
| 106 | 136 |
} |
| 107 |
- else {
|
|
| 108 |
- croak qq{"$bind_filter" is not registered}
|
|
| 109 |
- unless exists $self->filters->{$bind_filter};
|
|
| 110 |
- |
|
| 111 |
- $self->{_auto_bind_filter}{$table}{$column}
|
|
| 112 |
- = $self->filters->{$bind_filter};
|
|
| 113 |
- $self->{_auto_bind_filter}{$table}{"$table.$column"}
|
|
| 114 |
- = $self->filters->{$bind_filter};
|
|
| 115 |
- } |
|
| 116 | 137 |
|
| 117 |
- # Fetch filter |
|
| 118 |
- my $fetch_filter = $c->[2]; |
|
| 119 |
- if (ref $fetch_filter eq 'CODE') {
|
|
| 120 |
- $self->{_auto_fetch_filter}{$table}{$column}
|
|
| 121 |
- = $fetch_filter; |
|
| 122 |
- $self->{_auto_fetch_filter}{$table}{"$table.$column"}
|
|
| 123 |
- = $fetch_filter; |
|
| 124 |
- } |
|
| 125 |
- else {
|
|
| 126 |
- croak qq{"$fetch_filter" is not registered}
|
|
| 127 |
- unless exists $self->filters->{$fetch_filter};
|
|
| 128 |
- $self->{_auto_fetch_filter}{$table}{$column}
|
|
| 129 |
- = $self->filters->{$fetch_filter};
|
|
| 130 |
- $self->{_auto_fetch_filter}{$table}{"$table.$column"}
|
|
| 131 |
- = $self->filters->{$fetch_filter};
|
|
| 132 |
- } |
|
| 138 |
+ return $self; |
|
| 133 | 139 |
} |
| 134 | 140 |
|
| 135 |
- return $self; |
|
| 141 |
+ return $self->{auto_filter};
|
|
| 136 | 142 |
} |
| 137 | 143 |
|
| 138 | 144 |
sub helper {
|
| ... | ... |
@@ -228,36 +234,44 @@ sub create_query {
|
| 228 | 234 |
|
| 229 | 235 |
sub default_bind_filter {
|
| 230 | 236 |
my $self = shift; |
| 231 |
- my $fname = $_[0]; |
|
| 232 | 237 |
|
| 233 |
- if (@_ && !$fname) {
|
|
| 234 |
- $self->{_default_bind_filter} = undef;
|
|
| 235 |
- } |
|
| 236 |
- else {
|
|
| 237 |
- croak qq{"$fname" is not registered}
|
|
| 238 |
- unless exists $self->filters->{$fname};
|
|
| 239 |
- |
|
| 240 |
- $self->{_default_bind_filter} = $self->filters->{$fname};
|
|
| 238 |
+ if (@_) {
|
|
| 239 |
+ my $fname = $_[0]; |
|
| 240 |
+ |
|
| 241 |
+ if (@_ && !$fname) {
|
|
| 242 |
+ $self->{default_bind_filter} = undef;
|
|
| 243 |
+ } |
|
| 244 |
+ else {
|
|
| 245 |
+ croak qq{"$fname" is not registered}
|
|
| 246 |
+ unless exists $self->filters->{$fname};
|
|
| 247 |
+ |
|
| 248 |
+ $self->{default_bind_filter} = $self->filters->{$fname};
|
|
| 249 |
+ } |
|
| 250 |
+ return $self; |
|
| 241 | 251 |
} |
| 242 | 252 |
|
| 243 |
- return $self; |
|
| 253 |
+ return $self->{default_bind_filter};
|
|
| 244 | 254 |
} |
| 245 | 255 |
|
| 246 | 256 |
sub default_fetch_filter {
|
| 247 | 257 |
my $self = shift; |
| 248 | 258 |
my $fname = $_[0]; |
| 249 | 259 |
|
| 250 |
- if (@_ && !$fname) {
|
|
| 251 |
- $self->{_default_fetch_filter} = undef;
|
|
| 252 |
- } |
|
| 253 |
- else {
|
|
| 254 |
- croak qq{"$fname" is not registered}
|
|
| 255 |
- unless exists $self->filters->{$fname};
|
|
| 256 |
- |
|
| 257 |
- $self->{_default_fetch_filter} = $self->filters->{$fname};
|
|
| 260 |
+ if (@_) {
|
|
| 261 |
+ if (@_ && !$fname) {
|
|
| 262 |
+ $self->{default_fetch_filter} = undef;
|
|
| 263 |
+ } |
|
| 264 |
+ else {
|
|
| 265 |
+ croak qq{"$fname" is not registered}
|
|
| 266 |
+ unless exists $self->filters->{$fname};
|
|
| 267 |
+ |
|
| 268 |
+ $self->{default_fetch_filter} = $self->filters->{$fname};
|
|
| 269 |
+ } |
|
| 270 |
+ |
|
| 271 |
+ return $self; |
|
| 258 | 272 |
} |
| 259 | 273 |
|
| 260 |
- return $self; |
|
| 274 |
+ return $self->{default_fetch_filter}
|
|
| 261 | 275 |
} |
| 262 | 276 |
|
| 263 | 277 |
our %VALID_DELETE_ARGS |
| ... | ... |
@@ -339,7 +353,7 @@ sub execute{
|
| 339 | 353 |
foreach my $table (@$auto_filter_tables) {
|
| 340 | 354 |
$auto_filter = {
|
| 341 | 355 |
%$auto_filter, |
| 342 |
- %{$self->{_auto_bind_filter}->{$table} || {}}
|
|
| 356 |
+ %{$self->{auto_filter}{bind}->{$table} || {}}
|
|
| 343 | 357 |
} |
| 344 | 358 |
} |
| 345 | 359 |
|
| ... | ... |
@@ -373,17 +387,17 @@ sub execute{
|
| 373 | 387 |
foreach my $table (@$auto_filter_tables) {
|
| 374 | 388 |
$auto_fetch_filter = {
|
| 375 | 389 |
%$auto_filter, |
| 376 |
- %{$self->{_auto_fetch_filter}{$table} || {}}
|
|
| 390 |
+ %{$self->{auto_filter}{fetch}{$table} || {}}
|
|
| 377 | 391 |
} |
| 378 | 392 |
} |
| 379 | 393 |
|
| 380 | 394 |
# Result |
| 381 | 395 |
my $result = $self->result_class->new( |
| 382 |
- sth => $sth, |
|
| 383 |
- filters => $self->filters, |
|
| 384 |
- filter_check => $self->filter_check, |
|
| 385 |
- _auto_filter => $auto_fetch_filter || {},
|
|
| 386 |
- _default_filter => $self->{_default_fetch_filter}
|
|
| 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 |
|
| 387 | 401 |
); |
| 388 | 402 |
|
| 389 | 403 |
return $result; |
| ... | ... |
@@ -673,7 +687,7 @@ sub _build_bind_values {
|
| 673 | 687 |
: $params->{$column};
|
| 674 | 688 |
|
| 675 | 689 |
# Filtering |
| 676 |
- my $f = $filter->{$column} || $self->{_default_bind_filter} || '';
|
|
| 690 |
+ my $f = $filter->{$column} || $self->{default_bind_filter} || '';
|
|
| 677 | 691 |
|
| 678 | 692 |
push @bind_values, $f ? $f->($value) : $value; |
| 679 | 693 |
|
| ... | ... |
@@ -1009,12 +1023,14 @@ instead of suger methods. |
| 1009 | 1023 |
|
| 1010 | 1024 |
=head2 C<(deprecated) default_bind_filter> |
| 1011 | 1025 |
|
| 1012 |
- $dbi = $dbi->default_bind_filter($fname); |
|
| 1026 |
+ my $default_bind_filter = $dbi->default_bind_filter; |
|
| 1027 |
+ $dbi = $dbi->default_bind_filter($fname); |
|
| 1013 | 1028 |
|
| 1014 | 1029 |
Default filter when parameter binding is executed. |
| 1015 | 1030 |
|
| 1016 | 1031 |
=head2 C<(deprecated) default_fetch_filter> |
| 1017 | 1032 |
|
| 1033 |
+ my $default_fetch_filter = $dbi->default_fetch_filter; |
|
| 1018 | 1034 |
$dbi = $dbi->default_fetch_filter($fname); |
| 1019 | 1035 |
|
| 1020 | 1036 |
=head2 C<execute> |