Showing 3 changed files with 37 additions and 26 deletions
+2 -1
Changes
... ...
@@ -1,5 +1,6 @@
1 1
 0.1680
2
-    - select, update, and delete where option can receive string where clause
2
+    - DEPRECATED select() param option, this is renamed to where_param
3
+    - added select(), update(), and delete() where_param option
3 4
 0.1679
4 5
     - added EXPERIMENTAL select() wrap option to support Oracle ROWNUM
5 6
 0.1678
+30 -21
lib/DBIx/Custom.pm
... ...
@@ -265,7 +265,7 @@ sub dbh {
265 265
 }
266 266
 
267 267
 our %DELETE_ARGS
268
-  = map { $_ => 1 } @COMMON_ARGS, qw/where append allow_delete_all param/;
268
+  = map { $_ => 1 } @COMMON_ARGS, qw/where append allow_delete_all where_param/;
269 269
 
270 270
 sub delete {
271 271
     my ($self, %args) = @_;
... ...
@@ -284,14 +284,15 @@ sub delete {
284 284
     my $append           = delete $args{append};
285 285
     my $allow_delete_all = delete $args{allow_delete_all};
286 286
     my $query_return     = delete $args{query};
287
-    my $param            = delete $args{param} || {};
287
+    my $where_param      = delete $args{where_param} || {};
288 288
 
289 289
     # Where
290 290
     my $where_clause = '';
291 291
     if (ref $where) {
292 292
         $where = $self->_where_to_obj($where);
293
-        $param = keys %$param ? $self->merge_param($param, $where->param)
294
-                              : $where->param;
293
+        $where_param = keys %$where_param
294
+                     ? $self->merge_param($where_param, $where->param)
295
+                     : $where->param;
295 296
         
296 297
         # String where
297 298
         $where_clause = $where->to_string;
... ...
@@ -314,7 +315,7 @@ sub delete {
314 315
     # Execute query
315 316
     return $self->execute(
316 317
         $query,
317
-        param => $param,
318
+        param => $where_param,
318 319
         table => $table,
319 320
         %args
320 321
     );
... ...
@@ -809,7 +810,7 @@ sub register_tag { shift->query_builder->register_tag(@_) }
809 810
 
810 811
 our %SELECT_ARGS
811 812
   = map { $_ => 1 } @COMMON_ARGS,
812
-                    qw/column where append relation join param wrap/;
813
+                    qw/column where append relation join param where_param wrap/;
813 814
 
814 815
 sub select {
815 816
     my ($self, %args) = @_;
... ...
@@ -826,7 +827,10 @@ sub select {
826 827
     croak qq{"join" must be array reference } . _subname
827 828
       unless ref $join eq 'ARRAY';
828 829
     my $relation = delete $args{relation};
829
-    my $param = delete $args{param} || {};
830
+    my $param = delete $args{param} || {}; # DEPRECATED!
831
+    warn "DEPRECATED select() param option. this is renamed to where_param"
832
+      if keys %$param;
833
+    my $where_param = delete $args{where_param} || $param || {};
830 834
     my $query_return = $args{query};
831 835
     my $wrap = delete $args{wrap};
832 836
 
... ...
@@ -873,14 +877,16 @@ sub select {
873 877
       unless $tables->[-1];
874 878
 
875 879
     # Add tables in parameter
876
-    unshift @$tables, @{$self->_search_tables(join(' ', keys %$param) || '')};
880
+    unshift @$tables,
881
+            @{$self->_search_tables(join(' ', keys %$where_param) || '')};
877 882
     
878 883
     # Where
879 884
     my $where_clause = '';
880 885
     if (ref $where) {
881 886
         $where = $self->_where_to_obj($where);
882
-        $param = keys %$param ? $self->merge_param($param, $where->param)
883
-                              : $where->param;
887
+        $where_param = keys %$where_param
888
+                     ? $self->merge_param($where_param, $where->param)
889
+                     : $where->param;
884 890
         
885 891
         # String where
886 892
         $where_clause = $where->to_string;
... ...
@@ -920,7 +926,7 @@ sub select {
920 926
     # Execute query
921 927
     my $result = $self->execute(
922 928
         $query,
923
-        param => $param, 
929
+        param => $where_param, 
924 930
         table => $tables,
925 931
         %args
926 932
     );
... ...
@@ -972,7 +978,7 @@ sub setup_model {
972 978
 }
973 979
 
974 980
 our %UPDATE_ARGS
975
-  = map { $_ => 1 } @COMMON_ARGS, qw/param where append allow_update_all/;
981
+  = map { $_ => 1 } @COMMON_ARGS, qw/param where append allow_update_all where_param/;
976 982
 
977 983
 sub update {
978 984
     my ($self, %args) = @_;
... ...
@@ -983,6 +989,7 @@ sub update {
983 989
       unless $table;
984 990
     my $param            = delete $args{param} || {};
985 991
     my $where            = delete $args{where} || {};
992
+    my $where_param      = delete $args{where_param} || {};
986 993
     my $append           = delete $args{append} || '';
987 994
     my $allow_update_all = delete $args{allow_update_all};
988 995
     
... ...
@@ -1011,8 +1018,9 @@ sub update {
1011 1018
     my $where_clause = '';
1012 1019
     if (ref $where) {
1013 1020
         $where = $self->_where_to_obj($where);
1014
-        $param = keys %$param ? $self->merge_param($param, $where->param)
1015
-                              : $where->param;
1021
+        $where_param = keys %$where_param
1022
+                     ? $self->merge_param($where_param, $where->param)
1023
+                     : $where->param;
1016 1024
         
1017 1025
         # String where
1018 1026
         $where_clause = $where->to_string;
... ...
@@ -1021,6 +1029,9 @@ sub update {
1021 1029
     croak qq{"where" must be specified } . _subname
1022 1030
       if "$where_clause" eq '' && !$allow_update_all;
1023 1031
     
1032
+    # Merge param
1033
+    $param = $self->merge_param($param, $where_param) if keys %$where_param;
1034
+    
1024 1035
     # Update statement
1025 1036
     my @sql;
1026 1037
     push @sql, "update $q$table$q $update_clause $where_clause";
... ...
@@ -2584,14 +2595,12 @@ or array refrence.
2584 2595
     );
2585 2596
     $dbi->update(where => $where);
2586 2597
     
2587
-    # Array refrendce (where clause and parameter)
2588
-    $dbi->update(where =>
2589
-        [
2590
-            ['and', '{= author}', '{like title}'],
2591
-            {author => 'Ken', title => '%Perl%'}
2592
-        ]
2598
+    # String
2599
+    $dbi->update(
2600
+        where => ['{= id}', {id => 2}]
2601
+        param => {title => 'Perl', id => 2}
2593 2602
     );
2594
-
2603
+    
2595 2604
 =item C<append>
2596 2605
 
2597 2606
 Append statement to last of SQL. This is string.
+5 -4
t/dbix-custom-core-sqlite.t
... ...
@@ -2159,7 +2159,7 @@ $dbi->insert(table => 'table1', param => {key1 => 2, key2 => 3});
2159 2159
 $rows = $dbi->select(
2160 2160
     table => 'table1',
2161 2161
     where => '{= key1} and {= key2}',
2162
-    param => {key1 => 1, key2 => 2}
2162
+    where_param => {key1 => 1, key2 => 2}
2163 2163
 )->fetch_hash_all;
2164 2164
 is_deeply($rows, [{key1 => 1, key2 => 2}]);
2165 2165
 
... ...
@@ -2171,7 +2171,7 @@ $dbi->insert(table => 'table1', param => {key1 => 2, key2 => 3});
2171 2171
 $dbi->delete(
2172 2172
     table => 'table1',
2173 2173
     where => '{= key1} and {= key2}',
2174
-    param => {key1 => 1, key2 => 2}
2174
+    where_param => {key1 => 1, key2 => 2}
2175 2175
 );
2176 2176
 $rows = $dbi->select(table => 'table1')->fetch_hash_all;
2177 2177
 is_deeply($rows, [{key1 => 2, key2 => 3}]);
... ...
@@ -2183,8 +2183,9 @@ $dbi->execute($CREATE_TABLE->{0});
2183 2183
 $dbi->insert(table => 'table1', param => {key1 => 1, key2 => 2});
2184 2184
 $dbi->update(
2185 2185
     table => 'table1',
2186
-    param => {key1 => [5, 1], key2 => 2},
2187
-    where => '{= key1} and {= key2}'
2186
+    param => {key1 => 5},
2187
+    where => '{= key1} and {= key2}',
2188
+    where_param => {key1 => 1, key2 => 2}
2188 2189
 );
2189 2190
 $rows = $dbi->select(table => 'table1')->fetch_hash_all;
2190 2191
 is_deeply($rows, [{key1 => 5, key2 => 2}]);