Showing 3 changed files with 100 additions and 25 deletions
+3
Changes
... ...
@@ -1,3 +1,6 @@
1
+0.1685
2
+    - insert, insert_at, update, update_at can receive odd number arguments,
3
+      first one is parameter.
1 4
 0.1684
2 5
     - added DBIx::Custom::Result all method, this is alias for fetch_hash_all
3 6
     - added DBIx::Custom::Result one method, this is alias for fetch_hash_first
+53 -25
lib/DBIx/Custom.pm
... ...
@@ -1,6 +1,6 @@
1 1
 package DBIx::Custom;
2 2
 
3
-our $VERSION = '0.1684';
3
+our $VERSION = '0.1685';
4 4
 
5 5
 use 5.008001;
6 6
 use strict;
... ...
@@ -574,13 +574,17 @@ sub execute {
574 574
 our %INSERT_ARGS = map { $_ => 1 } @COMMON_ARGS, qw/param append/;
575 575
 
576 576
 sub insert {
577
-    my ($self, %args) = @_;
577
+    my $self = shift;
578 578
     
579 579
     # Arguments
580
+    my $param;
581
+    $param = shift if @_ % 2;
582
+    my %args = @_;
580 583
     my $table  = delete $args{table};
581 584
     croak qq{"table" option must be specified } . _subname
582 585
       unless $table;
583
-    my $param  = delete $args{param} || {};
586
+    my $p = delete $args{param} || {};
587
+    $param  ||= $p;
584 588
     my $append = delete $args{append} || '';
585 589
     my $query_return  = delete $args{query};
586 590
 
... ...
@@ -615,13 +619,17 @@ sub insert {
615 619
 our %INSERT_AT_ARGS = (%INSERT_ARGS, where => 1, primary_key => 1);
616 620
 
617 621
 sub insert_at {
618
-    my ($self, %args) = @_;
622
+    my $self = shift;
619 623
 
620 624
     # Arguments
625
+    my $param;
626
+    $param = shift if @_ % 2;
627
+    my %args = @_;
621 628
     my $primary_keys = delete $args{primary_key};
622 629
     $primary_keys = [$primary_keys] unless ref $primary_keys;
623 630
     my $where = delete $args{where};
624
-    my $param = delete $args{param};
631
+    my $p = delete $args{param} || {};
632
+    $param  ||= $p;
625 633
     
626 634
     # Check arguments
627 635
     foreach my $name (keys %args) {
... ...
@@ -1001,13 +1009,17 @@ our %UPDATE_ARGS
1001 1009
   = map { $_ => 1 } @COMMON_ARGS, qw/param where append allow_update_all where_param/;
1002 1010
 
1003 1011
 sub update {
1004
-    my ($self, %args) = @_;
1012
+    my $self = shift;
1005 1013
 
1006 1014
     # Arguments
1015
+    my $param;
1016
+    $param = shift if @_ % 2;
1017
+    my %args = @_;
1007 1018
     my $table = delete $args{table} || '';
1008 1019
     croak qq{"table" option must be specified } . _subname
1009 1020
       unless $table;
1010
-    my $param            = delete $args{param} || {};
1021
+    my $p = delete $args{param} || {};
1022
+    $param  ||= $p;
1011 1023
     my $where            = delete $args{where} || {};
1012 1024
     my $where_param      = delete $args{where_param} || {};
1013 1025
     my $append           = delete $args{append} || '';
... ...
@@ -1069,14 +1081,18 @@ sub update_all { shift->update(allow_update_all => 1, @_) };
1069 1081
 our %UPDATE_AT_ARGS = (%UPDATE_ARGS, where => 1, primary_key => 1);
1070 1082
 
1071 1083
 sub update_at {
1072
-    my ($self, %args) = @_;
1084
+    my $self = shift;
1073 1085
     
1074 1086
     # Arguments
1087
+    my $param;
1088
+    $param = shift if @_ % 2;
1089
+    my %args = @_;
1075 1090
     my $primary_keys = delete $args{primary_key};
1076 1091
     $primary_keys = [$primary_keys] unless ref $primary_keys;
1077 1092
     my $where = delete $args{where};
1093
+    my $p = delete $args{param} || {};
1094
+    $param  ||= $p;
1078 1095
     
1079
-
1080 1096
     # Check arguments
1081 1097
     foreach my $name (keys %args) {
1082 1098
         croak qq{"$name" is wrong option } . _subname
... ...
@@ -1086,7 +1102,7 @@ sub update_at {
1086 1102
     # Create where parameter
1087 1103
     my $where_param = $self->_create_where_param($where, $primary_keys);
1088 1104
     
1089
-    return $self->update(where => $where_param, %args);
1105
+    return $self->update(where => $where_param, param => $param, %args);
1090 1106
 }
1091 1107
 
1092 1108
 sub update_param {
... ...
@@ -2062,28 +2078,32 @@ Place holder is set to 5.
2062 2078
 =head2 C<insert>
2063 2079
 
2064 2080
     $dbi->insert(
2065
-        table  => 'book', 
2066
-        param  => {title => 'Perl', author => 'Ken'}
2081
+        param  => {title => 'Perl', author => 'Ken'},
2082
+        table  => 'book'
2067 2083
     );
2068
-
2084
+    
2069 2085
 Insert statement.
2070 2086
 
2071 2087
 The following opitons are currently available.
2072 2088
 
2073 2089
 =over 4
2074 2090
 
2075
-=item C<table>
2076
-
2077
-Table name.
2078
-
2079
-    $dbi->insert(table => 'book');
2080
-
2081 2091
 =item C<param>
2082 2092
 
2083 2093
 Insert data. This is hash reference.
2084 2094
 
2085 2095
     $dbi->insert(param => {title => 'Perl'});
2086 2096
 
2097
+If arguments is odd numbers, first argument is received as C<param>.
2098
+
2099
+    $dbi->insert({title => 'Perl', author => 'Ken'}, table => 'book');
2100
+
2101
+=item C<table>
2102
+
2103
+Table name.
2104
+
2105
+    $dbi->insert(table => 'book');
2106
+
2087 2107
 =item C<append>
2088 2108
 
2089 2109
 Append statement to last of SQL. This is string.
... ...
@@ -2607,18 +2627,26 @@ The following opitons are currently available.
2607 2627
 
2608 2628
 =over 4
2609 2629
 
2610
-=item C<table>
2611
-
2612
-Table name.
2613
-
2614
-    $dbi->update(table => 'book');
2615
-
2616 2630
 =item C<param>
2617 2631
 
2618 2632
 Update data. This is hash reference.
2619 2633
 
2620 2634
     $dbi->update(param => {title => 'Perl'});
2621 2635
 
2636
+If arguments is odd numbers, first argument is received as C<param>.
2637
+
2638
+    $dbi->update(
2639
+        {title => 'Perl'},
2640
+        table => 'book',
2641
+        where => {author => 'Ken'}
2642
+    );
2643
+
2644
+=item C<table>
2645
+
2646
+Table name.
2647
+
2648
+    $dbi->update(table => 'book');
2649
+
2622 2650
 =item C<where>
2623 2651
 
2624 2652
 Where clause. This is hash reference or L<DBIx::Custom::Where> object
+44
t/dbix-custom-core-sqlite.t
... ...
@@ -285,6 +285,14 @@ $result = $dbi->execute('select * from "table"');
285 285
 $rows   = $result->fetch_hash_all;
286 286
 is_deeply($rows, [{select => 2}], "reserved word");
287 287
 
288
+$dbi = DBIx::Custom->connect($NEW_ARGS->{0});
289
+$dbi->execute($CREATE_TABLE->{0});
290
+$dbi->insert({key1 => 1, key2 => 2}, table => 'table1');
291
+$dbi->insert({key1 => 3, key2 => 4}, table => 'table1');
292
+$result = $dbi->execute($SELECT_SOURCES->{0});
293
+$rows   = $result->fetch_hash_all;
294
+is_deeply($rows, [{key1 => 1, key2 => 2}, {key1 => 3, key2 => 4}], "basic");
295
+
288 296
 test 'update';
289 297
 $dbi = DBIx::Custom->connect($NEW_ARGS->{0});
290 298
 $dbi->execute($CREATE_TABLE->{1});
... ...
@@ -399,6 +407,17 @@ $result = $dbi->execute('select * from "table"');
399 407
 $rows   = $result->fetch_hash_all;
400 408
 is_deeply($rows, [{select => 2, update => 6}], "reserved word");
401 409
 
410
+$dbi = DBIx::Custom->connect($NEW_ARGS->{0});
411
+$dbi->execute($CREATE_TABLE->{1});
412
+$dbi->insert(table => 'table1', param => {key1 => 1, key2 => 2, key3 => 3, key4 => 4, key5 => 5});
413
+$dbi->insert(table => 'table1', param => {key1 => 6, key2 => 7, key3 => 8, key4 => 9, key5 => 10});
414
+$dbi->update({key2 => 11}, table => 'table1', where => {key1 => 1});
415
+$result = $dbi->execute($SELECT_SOURCES->{0});
416
+$rows   = $result->fetch_hash_all;
417
+is_deeply($rows, [{key1 => 1, key2 => 11, key3 => 3, key4 => 4, key5 => 5},
418
+                  {key1 => 6, key2 => 7,  key3 => 8, key4 => 9, key5 => 10}],
419
+                  "basic");
420
+
402 421
 test 'update_all';
403 422
 $dbi = DBIx::Custom->connect($NEW_ARGS->{0});
404 423
 $dbi->execute($CREATE_TABLE->{1});
... ...
@@ -1621,6 +1640,18 @@ eval {
1621 1640
 };
1622 1641
 like($@, qr/must be/);
1623 1642
 
1643
+$dbi = DBIx::Custom->connect($NEW_ARGS->{0});
1644
+$dbi->execute($CREATE_TABLE->{1});
1645
+$dbi->insert_at(
1646
+    {key3 => 3},
1647
+    primary_key => ['key1', 'key2'], 
1648
+    table => 'table1',
1649
+    where => [1, 2],
1650
+);
1651
+is($dbi->select(table => 'table1')->fetch_hash_first->{key1}, 1);
1652
+is($dbi->select(table => 'table1')->fetch_hash_first->{key2}, 2);
1653
+is($dbi->select(table => 'table1')->fetch_hash_first->{key3}, 3);
1654
+
1624 1655
 test 'update_at';
1625 1656
 $dbi = DBIx::Custom->connect($NEW_ARGS->{0});
1626 1657
 $dbi->execute($CREATE_TABLE->{1});
... ...
@@ -1647,6 +1678,19 @@ is($dbi->select(table => 'table1')->fetch_hash_first->{key1}, 1);
1647 1678
 is($dbi->select(table => 'table1')->fetch_hash_first->{key2}, 2);
1648 1679
 is($dbi->select(table => 'table1')->fetch_hash_first->{key3}, 4);
1649 1680
 
1681
+$dbi = DBIx::Custom->connect($NEW_ARGS->{0});
1682
+$dbi->execute($CREATE_TABLE->{1});
1683
+$dbi->insert(table => 'table1', param => {key1 => 1, key2 => 2, key3 => 3});
1684
+$dbi->update_at(
1685
+    {key3 => 4},
1686
+    table => 'table1',
1687
+    primary_key => ['key1', 'key2'],
1688
+    where => [1, 2]
1689
+);
1690
+is($dbi->select(table => 'table1')->fetch_hash_first->{key1}, 1);
1691
+is($dbi->select(table => 'table1')->fetch_hash_first->{key2}, 2);
1692
+is($dbi->select(table => 'table1')->fetch_hash_first->{key3}, 4);
1693
+
1650 1694
 test 'select_at';
1651 1695
 $dbi = DBIx::Custom->connect($NEW_ARGS->{0});
1652 1696
 $dbi->execute($CREATE_TABLE->{1});