| ... | ... | 
                  @@ -1,3 +1,6 @@  | 
              
| 1 | 
                  +0.1622  | 
              |
| 2 | 
                  + deprecated DBIx::Custom::SQLite and DBIx::Custom::MySQL  | 
              |
| 3 | 
                  +  | 
              |
| 1 | 4 | 
                  0.1621  | 
              
| 2 | 5 | 
                  cleanup (removed undocumented features)  | 
              
| 3 | 6 | 
                  0.1620  | 
              
| ... | ... | 
                  @@ -1,6 +1,6 @@  | 
              
| 1 | 1 | 
                  package DBIx::Custom;  | 
              
| 2 | 2 | 
                   | 
              
| 3 | 
                  -our $VERSION = '0.1621';  | 
              |
| 3 | 
                  +our $VERSION = '0.1622';  | 
              |
| 4 | 4 | 
                   | 
              
| 5 | 5 | 
                  use 5.008001;  | 
              
| 6 | 6 | 
                  use strict;  | 
              
| ... | ... | 
                  @@ -16,7 +16,7 @@ use DBIx::Custom::QueryBuilder;  | 
              
| 16 | 16 | 
                  use Encode qw/encode_utf8 decode_utf8/;  | 
              
| 17 | 17 | 
                   | 
              
| 18 | 18 | 
                  __PACKAGE__->attr([qw/data_source dbh default_bind_filter  | 
              
| 19 | 
                  - default_fetch_filter password user/]);  | 
              |
| 19 | 
                  + dbi_options default_fetch_filter password user/]);  | 
              |
| 20 | 20 | 
                   | 
              
| 21 | 21 | 
                  __PACKAGE__->attr(cache => 1);  | 
              
| 22 | 22 | 
                   __PACKAGE__->attr(cache_method => sub {
                 | 
              
| ... | ... | 
                  @@ -84,6 +84,19 @@ sub helper {
                 | 
              
| 84 | 84 | 
                  return $self;  | 
              
| 85 | 85 | 
                  }  | 
              
| 86 | 86 | 
                   | 
              
| 87 | 
                  +#sub new {
                 | 
              |
| 88 | 
                  +# my $self = shift->SUPER::new(@_);  | 
              |
| 89 | 
                  +#  | 
              |
| 90 | 
                  +# # Check attribute names  | 
              |
| 91 | 
                  +# my @attrs = keys %$self;  | 
              |
| 92 | 
                  +#    foreach my $attr (@attrs) {
                 | 
              |
| 93 | 
                  +#        croak qq{"$attr" is invalid attribute name"}
                 | 
              |
| 94 | 
                  +# unless $self->can($attr);  | 
              |
| 95 | 
                  +# }  | 
              |
| 96 | 
                  +#  | 
              |
| 97 | 
                  +# return $self;  | 
              |
| 98 | 
                  +#}  | 
              |
| 99 | 
                  +  | 
              |
| 87 | 100 | 
                   sub connect {
                 | 
              
| 88 | 101 | 
                  my $proto = shift;  | 
              
| 89 | 102 | 
                   | 
              
| ... | ... | 
                  @@ -92,10 +105,13 @@ sub connect {
                 | 
              
| 92 | 105 | 
                   | 
              
| 93 | 106 | 
                  # Information  | 
              
| 94 | 107 | 
                  my $data_source = $self->data_source;  | 
              
| 108 | 
                  +  | 
              |
| 109 | 
                  +    croak qq{"data_source" must be specfied to connect method"}
                 | 
              |
| 110 | 
                  + unless $data_source;  | 
              |
| 111 | 
                  +  | 
              |
| 95 | 112 | 
                  my $user = $self->user;  | 
              
| 96 | 113 | 
                  my $password = $self->password;  | 
              
| 97 | 114 | 
                   | 
              
| 98 | 
                  -  | 
              |
| 99 | 115 | 
                  # Connect  | 
              
| 100 | 116 | 
                       my $dbh = eval {DBI->connect(
                 | 
              
| 101 | 117 | 
                  $data_source,  | 
              
| ... | ... | 
                  @@ -383,6 +383,52 @@ Note that in fetch filter, column names must be lower case  | 
              
| 383 | 383 | 
                  even if the column name conatains upper case charactors.  | 
              
| 384 | 384 | 
                  This is requirment not to depend database systems.  | 
              
| 385 | 385 | 
                   | 
              
| 386 | 
                  +B<Filter examples>  | 
              |
| 387 | 
                  +  | 
              |
| 388 | 
                  +MySQL  | 
              |
| 389 | 
                  +  | 
              |
| 390 | 
                  + # Time::Piece object to DATETIME format  | 
              |
| 391 | 
                  +    tp_to_datetime => sub {
                 | 
              |
| 392 | 
                  +        return shift->strftime('%Y-%m-%d %H:%M:%S');
                 | 
              |
| 393 | 
                  + }  | 
              |
| 394 | 
                  +  | 
              |
| 395 | 
                  + # Time::Piece object to DATE format  | 
              |
| 396 | 
                  +    tp_to_date => sub {
                 | 
              |
| 397 | 
                  +        return shift->strftime('%Y-%m-%d');
                 | 
              |
| 398 | 
                  + },  | 
              |
| 399 | 
                  +  | 
              |
| 400 | 
                  + # DATETIME to Time::Piece object  | 
              |
| 401 | 
                  +    datetime_to_tp => sub {
                 | 
              |
| 402 | 
                  + return Time::Piece->strptime(shift, '%Y-%m-%d %H:%M:%S');  | 
              |
| 403 | 
                  + }  | 
              |
| 404 | 
                  +  | 
              |
| 405 | 
                  + # DATE to Time::Piece object  | 
              |
| 406 | 
                  +    date_to_tp => sub {
                 | 
              |
| 407 | 
                  + return Time::Piece->strptime(shift, '%Y-%m-%d');  | 
              |
| 408 | 
                  + }  | 
              |
| 409 | 
                  +  | 
              |
| 410 | 
                  +SQLite  | 
              |
| 411 | 
                  +  | 
              |
| 412 | 
                  + # Time::Piece object to DATETIME format  | 
              |
| 413 | 
                  +    tp_to_datetime => sub {
                 | 
              |
| 414 | 
                  +        return shift->strftime('%Y-%m-%d %H:%M:%S');
                 | 
              |
| 415 | 
                  + }  | 
              |
| 416 | 
                  +  | 
              |
| 417 | 
                  + # Time::Piece object to DATE format  | 
              |
| 418 | 
                  +    tp_to_date => sub {
                 | 
              |
| 419 | 
                  +        return shift->strftime('%Y-%m-%d');
                 | 
              |
| 420 | 
                  + },  | 
              |
| 421 | 
                  +  | 
              |
| 422 | 
                  + # DATETIME to Time::Piece object  | 
              |
| 423 | 
                  +    datetime_to_tp => sub {
                 | 
              |
| 424 | 
                  +        return Time::Piece->strptime(shift, $FORMATS->{db_datetime});
                 | 
              |
| 425 | 
                  + }  | 
              |
| 426 | 
                  +  | 
              |
| 427 | 
                  + # DATE to Time::Piece object  | 
              |
| 428 | 
                  +    date_to_tp => sub {
                 | 
              |
| 429 | 
                  +        return Time::Piece->strptime(shift, $FORMATS->{db_date});
                 | 
              |
| 430 | 
                  + }  | 
              |
| 431 | 
                  +  | 
              |
| 386 | 432 | 
                  =head2 6. Get high performance  | 
              
| 387 | 433 | 
                   | 
              
| 388 | 434 | 
                  =head3 Disable filter checking  | 
              
| ... | ... | 
                  @@ -458,6 +458,52 @@ C<title>の値にはデフォルトのフィルタであるC<encode_utf8>が適  | 
              
| 458 | 458 | 
                  C<author>の値にはC<to_upper_case>が適用されます。  | 
              
| 459 | 459 | 
                  C<price>にはundefを設定しているのでフィルタが解除されます。  | 
              
| 460 | 460 | 
                   | 
              
| 461 | 
                  +B<フィルタのサンプル>  | 
              |
| 462 | 
                  +  | 
              |
| 463 | 
                  +MySQL  | 
              |
| 464 | 
                  +  | 
              |
| 465 | 
                  + # Time::Piece object to DATETIME format  | 
              |
| 466 | 
                  +    tp_to_datetime => sub {
                 | 
              |
| 467 | 
                  +        return shift->strftime('%Y-%m-%d %H:%M:%S');
                 | 
              |
| 468 | 
                  + }  | 
              |
| 469 | 
                  +  | 
              |
| 470 | 
                  + # Time::Piece object to DATE format  | 
              |
| 471 | 
                  +    tp_to_date => sub {
                 | 
              |
| 472 | 
                  +        return shift->strftime('%Y-%m-%d');
                 | 
              |
| 473 | 
                  + }  | 
              |
| 474 | 
                  +  | 
              |
| 475 | 
                  + # DATETIME to Time::Piece object  | 
              |
| 476 | 
                  +    datetime_to_tp => sub {
                 | 
              |
| 477 | 
                  + return Time::Piece->strptime(shift, '%Y-%m-%d %H:%M:%S');  | 
              |
| 478 | 
                  + }  | 
              |
| 479 | 
                  +  | 
              |
| 480 | 
                  + # DATE to Time::Piece object  | 
              |
| 481 | 
                  +    date_to_tp => sub {
                 | 
              |
| 482 | 
                  + return Time::Piece->strptime(shift, '%Y-%m-%d');  | 
              |
| 483 | 
                  + }  | 
              |
| 484 | 
                  +  | 
              |
| 485 | 
                  +SQLite  | 
              |
| 486 | 
                  +  | 
              |
| 487 | 
                  + # Time::Piece object to DATETIME format  | 
              |
| 488 | 
                  +    tp_to_datetime => sub {
                 | 
              |
| 489 | 
                  +        return shift->strftime('%Y-%m-%d %H:%M:%S');
                 | 
              |
| 490 | 
                  + }  | 
              |
| 491 | 
                  +  | 
              |
| 492 | 
                  + # Time::Piece object to DATE format  | 
              |
| 493 | 
                  +    tp_to_date => sub {
                 | 
              |
| 494 | 
                  +        return shift->strftime('%Y-%m-%d');
                 | 
              |
| 495 | 
                  + }  | 
              |
| 496 | 
                  +  | 
              |
| 497 | 
                  + # DATETIME to Time::Piece object  | 
              |
| 498 | 
                  +    datetime_to_tp => sub {
                 | 
              |
| 499 | 
                  +        return Time::Piece->strptime(shift, $FORMATS->{db_datetime});
                 | 
              |
| 500 | 
                  + }  | 
              |
| 501 | 
                  +  | 
              |
| 502 | 
                  + # DATE to Time::Piece object  | 
              |
| 503 | 
                  +    date_to_tp => sub {
                 | 
              |
| 504 | 
                  +        return Time::Piece->strptime(shift, $FORMATS->{db_date});
                 | 
              |
| 505 | 
                  + }  | 
              |
| 506 | 
                  +  | 
              |
| 461 | 507 | 
                  =head3 行のフェッチ時のフィルタリング  | 
              
| 462 | 508 | 
                   | 
              
| 463 | 509 | 
                  行をフェッチするときのフィルタも設定することができます。  |