... | ... |
@@ -182,7 +182,10 @@ sub query { |
182 | 182 |
# Select |
183 | 183 |
if ($sth->{NUM_OF_FIELDS}) { |
184 | 184 |
my $result_class = $self->result_class; |
185 |
- my $result = $result_class->new({sth => $sth}); |
|
185 |
+ my $result = $result_class->new({ |
|
186 |
+ sth => $sth, |
|
187 |
+ fetch_filter => $self->fetch_filter |
|
188 |
+ }); |
|
186 | 189 |
return $result; |
187 | 190 |
} |
188 | 191 |
return $ret_val; |
... | ... |
@@ -192,7 +195,7 @@ sub query { |
192 | 195 |
sub query_raw_sql { |
193 | 196 |
my ($self, $sql, @bind) = @_; |
194 | 197 |
|
195 |
- $sefl->connect unless $self->connected; |
|
198 |
+ $self->connect unless $self->connected; |
|
196 | 199 |
my $sth = $self->dbh->prepare($sql); |
197 | 200 |
$sth->execute(@bind); |
198 | 201 |
return $sth; |
... | ... |
@@ -205,17 +208,54 @@ Object::Simple->build_class; |
205 | 208 |
package DBI::Custom::Result; |
206 | 209 |
use Object::Simple; |
207 | 210 |
|
208 |
-sub sth : Attr {}; |
|
211 |
+sub sth : Attr {} |
|
212 |
+sub fetch_filter {} |
|
209 | 213 |
|
210 | 214 |
sub fetchrow_arrayref { |
211 | 215 |
my $self = shift; |
212 |
- $self->sth; |
|
216 |
+ my $sth = $self->{sth}; |
|
217 |
+ |
|
218 |
+ my $array = $sth->fetchrow_arrayref; |
|
219 |
+ |
|
220 |
+ return $array unless $array; |
|
213 | 221 |
|
222 |
+ my $keys = $sth->{NAME_lc}; |
|
214 | 223 |
|
224 |
+ for (my $i = 0; $i < @$keys; $i++) { |
|
225 |
+ $array->[$i] = $self->fetch_filter($keys->[$i], $array->[$i]); |
|
226 |
+ } |
|
227 |
+ return $array; |
|
215 | 228 |
} |
216 | 229 |
|
230 |
+sub fetchrow_array { |
|
231 |
+ my $self = shift; |
|
232 |
+ my $sth = $self->{sth}; |
|
233 |
+ |
|
234 |
+ my @array = $sth->fetchrow_array; |
|
235 |
+ |
|
236 |
+ return unless @array; |
|
237 |
+ |
|
238 |
+ my $keys = $sth->{NAME_lc}; |
|
239 |
+ |
|
240 |
+ for (my $i = 0; $i < @$keys; $i++) { |
|
241 |
+ $array[$i] = $self->fetch_filter($keys->[$i], $array[$i]); |
|
242 |
+ } |
|
243 |
+ return @array; |
|
244 |
+} |
|
217 | 245 |
|
218 |
-*fetch = \&fetchrow_arrayref; |
|
246 |
+sub fetchrow_hashref { |
|
247 |
+ my $self = shift; |
|
248 |
+ my $sth = $self->{sth}; |
|
249 |
+ |
|
250 |
+ my $hash = $sth->fetchrow_hashref; |
|
251 |
+ |
|
252 |
+ return unless $hash; |
|
253 |
+ |
|
254 |
+ foreach my $key (keys %$hash) { |
|
255 |
+ $hash->{$key} = $self->fetch_filter($key, $hash->{$key}); |
|
256 |
+ } |
|
257 |
+ return $hash; |
|
258 |
+} |
|
219 | 259 |
|
220 | 260 |
sub err { shift->sth->err } |
221 | 261 |
sub errstr { shift->sth->errstr } |
... | ... |
@@ -460,51 +500,14 @@ Version 0.0101 |
460 | 500 |
|
461 | 501 |
=head2 result_class |
462 | 502 |
|
463 |
-=head1 AUTHOR |
|
464 |
- |
|
465 |
-Yuki Kimoto, C<< <kimoto.yuki at gmail.com> >> |
|
466 |
- |
|
467 |
-=head1 BUGS |
|
503 |
+=head2 commit |
|
468 | 504 |
|
469 |
-Please report any bugs or feature requests to C<bug-dbi-custom at rt.cpan.org>, or through |
|
470 |
-the web interface at L<http://rt.cpan.org/NoAuth/ReportBug.html?Queue=DBI-Custom>. I will be notified, and then you'll |
|
471 |
-automatically be notified of progress on your bug as I make changes. |
|
505 |
+=head2 rollback |
|
472 | 506 |
|
473 | 507 |
|
508 |
+=head1 AUTHOR |
|
474 | 509 |
|
475 |
- |
|
476 |
-=head1 SUPPORT |
|
477 |
- |
|
478 |
-You can find documentation for this module with the perldoc command. |
|
479 |
- |
|
480 |
- perldoc DBI::Custom |
|
481 |
- |
|
482 |
- |
|
483 |
-You can also look for information at: |
|
484 |
- |
|
485 |
-=over 4 |
|
486 |
- |
|
487 |
-=item * RT: CPAN's request tracker |
|
488 |
- |
|
489 |
-L<http://rt.cpan.org/NoAuth/Bugs.html?Dist=DBI-Custom> |
|
490 |
- |
|
491 |
-=item * AnnoCPAN: Annotated CPAN documentation |
|
492 |
- |
|
493 |
-L<http://annocpan.org/dist/DBI-Custom> |
|
494 |
- |
|
495 |
-=item * CPAN Ratings |
|
496 |
- |
|
497 |
-L<http://cpanratings.perl.org/d/DBI-Custom> |
|
498 |
- |
|
499 |
-=item * Search CPAN |
|
500 |
- |
|
501 |
-L<http://search.cpan.org/dist/DBI-Custom/> |
|
502 |
- |
|
503 |
-=back |
|
504 |
- |
|
505 |
- |
|
506 |
-=head1 ACKNOWLEDGEMENTS |
|
507 |
- |
|
510 |
+Yuki Kimoto, C<< <kimoto.yuki at gmail.com> >> |
|
508 | 511 |
|
509 | 512 |
=head1 COPYRIGHT & LICENSE |
510 | 513 |
|