Showing 4 changed files with 11 additions and 67 deletions
+3
Changes
... ...
@@ -1,3 +1,6 @@
1
+0.1640
2
+  autoload DBI method
3
+  removed experimental expand
1 4
 0.1639
2 5
   improved delete() and update() where option. you can use DBIx::Custom::Where object
3 6
   added experimental not_exists()
+6 -50
lib/DBIx/Custom.pm
... ...
@@ -1,6 +1,6 @@
1 1
 package DBIx::Custom;
2 2
 
3
-our $VERSION = '0.1639';
3
+our $VERSION = '0.1640';
4 4
 
5 5
 use 5.008001;
6 6
 use strict;
... ...
@@ -53,21 +53,7 @@ __PACKAGE__->attr(
53 53
     }
54 54
 );
55 55
 
56
-# DBI methods
57
-foreach my $method (qw/begin_work commit rollback/) {
58
-    my $code = sub {
59
-        my $self = shift;
60
-        my $ret = eval {$self->dbh->$method};
61
-        croak $@ if $@;
62
-        return $ret;
63
-    };
64
-    no strict 'refs';
65
-    my $pkg = __PACKAGE__;
66
-    *{"${pkg}::$method"} = $code;
67
-};
68
-
69 56
 our $AUTOLOAD;
70
-
71 57
 sub AUTOLOAD {
72 58
     my $self = shift;
73 59
 
... ...
@@ -76,10 +62,11 @@ sub AUTOLOAD {
76 62
 
77 63
     # Method
78 64
     $self->{_methods} ||= {};
79
-    croak qq/Can't locate object method "$mname" via "$package"/
80
-      unless my $method = $self->{_methods}->{$mname};
65
+    my $method = $self->{_methods}->{$mname};
66
+    return $self->$method(@_) if $method;
81 67
     
82
-    return $self->$method(@_);
68
+    # DBI method
69
+    return $self->dbh->$mname(@_);
83 70
 }
84 71
 
85 72
 sub apply_filter {
... ...
@@ -371,21 +358,6 @@ sub execute{
371 358
     return $affected;
372 359
 }
373 360
 
374
-sub expand {
375
-    my $self = shift;
376
-    my $source = ref $_[0] eq 'HASH' ? $_[0] : {@_};
377
-    my $table = (keys %$source)[0];
378
-    my $param = $source->{$table};
379
-    
380
-    # Expand table name
381
-    my $expand = {};
382
-    foreach my $column (keys %$param) {
383
-        $expand->{"$table.$column"} = $param->{$column};
384
-    }
385
-    
386
-    return %$expand;
387
-}
388
-
389 361
 our %VALID_INSERT_ARGS = map { $_ => 1 } qw/table param append
390 362
                                             filter query/;
391 363
 sub insert {
... ...
@@ -1001,6 +973,7 @@ C<connect()> method use this value to connect the database.
1001 973
 =head1 METHODS
1002 974
 
1003 975
 L<DBIx::Custom> inherits all methods from L<Object::Simple>
976
+and use all method of L<DBI>
1004 977
 and implements the following new ones.
1005 978
 
1006 979
 =head2 C<(experimental) apply_filter>
... ...
@@ -1025,23 +998,6 @@ arguments.
1025 998
          table => ['table1']
1026 999
     );
1027 1000
     
1028
-=head2 C<begin_work>
1029
-
1030
-    $dbi->begin_work;
1031
-
1032
-Start transaction.
1033
-This is same as L<DBI>'s C<begin_work>.
1034
-
1035
-L<DBIx::Custom> inherits all methods from L<Object::Simple>
1036
-and implements the following new ones.
1037
-
1038
-=head2 C<commit>
1039
-
1040
-    $dbi->commit;
1041
-
1042
-Commit transaction.
1043
-This is same as L<DBI>'s C<commit>.
1044
-
1045 1001
 =head2 C<connect>
1046 1002
 
1047 1003
     my $dbi = DBIx::Custom->connect(data_source => "dbi:mysql:database=dbname",
+1 -1
t/dbix-custom-core-sqlite.t
... ...
@@ -574,7 +574,7 @@ is($dbi->two, 2, "second");
574 574
 is($dbi->twice(5), 10 , "second");
575 575
 
576 576
 eval {$dbi->XXXXXX};
577
-like($@, qr/\QCan't locate object method "XXXXXX" via "DBIx::Custom"/, "not exists");
577
+ok($@, "not exists");
578 578
 
579 579
 test 'out filter';
580 580
 $dbi = DBIx::Custom->connect($NEW_ARGS->{0});
+1 -16
t/dbix-custom-core.t
... ...
@@ -1,4 +1,4 @@
1
-use Test::More tests => 12;
1
+use Test::More 'no_plan';
2 2
 use strict;
3 3
 use warnings;
4 4
 
... ...
@@ -83,21 +83,6 @@ is($dbi->filters->{a}->(), 1);
83 83
 $dbi->register_filter({b => sub {2}});
84 84
 is($dbi->filters->{b}->(), 2);
85 85
 
86
-
87
-test 'expand';
88
-{
89
-    $dbi = DBIx::Custom->new;
90
-    my $source = {books => {title => 'Perl', author => 'Ken'}};
91
-    is_deeply({$dbi->expand($source)}, 
92
-              {'books.title' => 'Perl', 'books.author' => 'Ken'});
93
-}
94
-{
95
-    $dbi = DBIx::Custom->new;
96
-    my %source = (books => {title => 'Perl', author => 'Ken'});
97
-    is_deeply({$dbi->expand(%source)}, 
98
-              {'books.title' => 'Perl', 'books.author' => 'Ken'});
99
-}
100
-
101 86
 test 'invalid attribute name';
102 87
 eval {$dbi = DBIx::Custom->new(a => 1) };
103 88
 like ($@, qr/"a" is invalid attribute name/);