Showing 2 changed files with 55 additions and 12 deletions
+40 -12
lib/DBIx/Custom.pm
... ...
@@ -240,7 +240,7 @@ sub create_query {
240 240
 }
241 241
 
242 242
 our %VALID_DELETE_ARGS
243
-  = map { $_ => 1 } qw/table where append filter allow_delete_all/;
243
+  = map { $_ => 1 } qw/table where append filter allow_delete_all query/;
244 244
 
245 245
 sub delete {
246 246
     my ($self, %args) = @_;
... ...
@@ -278,9 +278,13 @@ sub delete {
278 278
     my $source = "delete from $table $where_clause";
279 279
     $source .= " $append" if $append;
280 280
     
281
+    # Create query
282
+    my $query = $self->create_query($source);
283
+    return $query if $args{query};
284
+    
281 285
     # Execute query
282 286
     my $ret_val = $self->execute(
283
-        $source, param  => $where, filter => $filter,
287
+        $query, param  => $where, filter => $filter,
284 288
         table => $table);
285 289
     
286 290
     return $ret_val;
... ...
@@ -386,7 +390,7 @@ sub expand {
386 390
 }
387 391
 
388 392
 our %VALID_INSERT_ARGS = map { $_ => 1 } qw/table param append
389
-                                            filter/;
393
+                                            filter query/;
390 394
 sub insert {
391 395
     my ($self, %args) = @_;
392 396
 
... ...
@@ -410,9 +414,13 @@ sub insert {
410 414
                . join(' ', @insert_keys) . '}';
411 415
     $source .= " $append" if $append;
412 416
     
417
+    # Create query
418
+    my $query = $self->create_query($source);
419
+    return $query if $args{query};
420
+    
413 421
     # Execute query
414 422
     my $ret_val = $self->execute(
415
-        $source,
423
+        $query,
416 424
         param  => $param,
417 425
         filter => $filter,
418 426
         table => $table
... ...
@@ -464,7 +472,7 @@ sub register_filter {
464 472
 }
465 473
 
466 474
 our %VALID_SELECT_ARGS
467
-  = map { $_ => 1 } qw/table column where append relation filter/;
475
+  = map { $_ => 1 } qw/table column where append relation filter query/;
468 476
 
469 477
 sub select {
470 478
     my ($self, %args) = @_;
... ...
@@ -546,9 +554,13 @@ sub select {
546 554
     # Append some statement
547 555
     $source .= " $append" if $append;
548 556
     
557
+    # Create query
558
+    my $query = $self->create_query($source);
559
+    return $query if $args{query};
560
+    
549 561
     # Execute query
550 562
     my $result = $self->execute(
551
-        $source, param  => $param, filter => $filter,
563
+        $query, param  => $param, filter => $filter,
552 564
         table => $tables);    
553 565
     
554 566
     return $result;
... ...
@@ -591,7 +603,7 @@ sub txn_scope {
591 603
 
592 604
 our %VALID_UPDATE_ARGS
593 605
   = map { $_ => 1 } qw/table param
594
-                       where append filter allow_update_all/;
606
+                       where append filter allow_update_all query/;
595 607
 
596 608
 sub update {
597 609
     my ($self, %args) = @_;
... ...
@@ -652,8 +664,12 @@ sub update {
652 664
         }
653 665
     }
654 666
     
667
+    # Create query
668
+    my $query = $self->create_query($source);
669
+    return $query if $args{query};
670
+    
655 671
     # Execute query
656
-    my $ret_val = $self->execute($source, param  => $param, 
672
+    my $ret_val = $self->execute($query, param  => $param, 
657 673
                                  filter => $filter,
658 674
                                  table => $table);
659 675
     
... ...
@@ -1085,7 +1101,8 @@ This is used in C<select()>
1085 1101
     $dbi->delete(table  => $table,
1086 1102
                  where  => \%where,
1087 1103
                  append => $append,
1088
-                 filter => \%filter);
1104
+                 filter => \%filter,
1105
+                 query  => 1);
1089 1106
 
1090 1107
 Execute delete statement.
1091 1108
 C<delete> method have C<table>, C<where>, C<append>, and C<filter> arguments.
... ...
@@ -1093,6 +1110,8 @@ C<table> is a table name.
1093 1110
 C<where> is where clause. this must be hash reference.
1094 1111
 C<append> is a string added at the end of the SQL statement.
1095 1112
 C<filter> is filters when parameter binding is executed.
1113
+C<query> is if you don't execute sql and get L<DBIx::Custom::Query> object as return value.
1114
+default to 0. This is experimental.
1096 1115
 Return value of C<delete()> is the count of affected rows.
1097 1116
 
1098 1117
 B<Example:>
... ...
@@ -1138,7 +1157,8 @@ Register helper methods. These method is called from L<DBIx::Custom> object dire
1138 1157
     $dbi->insert(table  => $table, 
1139 1158
                  param  => \%param,
1140 1159
                  append => $append,
1141
-                 filter => \%filter);
1160
+                 filter => \%filter,
1161
+                 query  => 1);
1142 1162
 
1143 1163
 Execute insert statement.
1144 1164
 C<insert> method have C<table>, C<param>, C<append>
... ...
@@ -1147,6 +1167,8 @@ C<table> is a table name.
1147 1167
 C<param> is the pairs of column name value. this must be hash reference.
1148 1168
 C<append> is a string added at the end of the SQL statement.
1149 1169
 C<filter> is filters when parameter binding is executed.
1170
+C<query> is if you don't execute sql and get L<DBIx::Custom::Query> object as return value.
1171
+default to 0. This is experimental.
1150 1172
 This is overwrites C<default_bind_filter>.
1151 1173
 Return value of C<insert()> is the count of affected rows.
1152 1174
 
... ...
@@ -1240,7 +1262,8 @@ This is same as L<DBI>'s C<rollback>.
1240 1262
                               where    => \%where,
1241 1263
                               append   => $append,
1242 1264
                               relation => \%relation,
1243
-                              filter   => \%filter);
1265
+                              filter   => \%filter,
1266
+                              query    => 1);
1244 1267
 
1245 1268
 Execute select statement.
1246 1269
 C<select> method have C<table>, C<column>, C<where>, C<append>,
... ...
@@ -1249,6 +1272,8 @@ C<table> is a table name.
1249 1272
 C<where> is where clause. this is normally hash reference.
1250 1273
 C<append> is a string added at the end of the SQL statement.
1251 1274
 C<filter> is filters when parameter binding is executed.
1275
+C<query> is if you don't execute sql and get L<DBIx::Custom::Query> object as return value.
1276
+default to 0. This is experimental.
1252 1277
 
1253 1278
 B<Example:>
1254 1279
 
... ...
@@ -1294,7 +1319,8 @@ Second element is paramters.
1294 1319
                  param  => \%params,
1295 1320
                  where  => \%where,
1296 1321
                  append => $append,
1297
-                 filter => \%filter)
1322
+                 filter => \%filter,
1323
+                 query  => 1)
1298 1324
 
1299 1325
 Execute update statement.
1300 1326
 C<update> method have C<table>, C<param>, C<where>, C<append>
... ...
@@ -1304,6 +1330,8 @@ C<param> is column-value pairs. this must be hash reference.
1304 1330
 C<where> is where clause. this must be hash reference.
1305 1331
 C<append> is a string added at the end of the SQL statement.
1306 1332
 C<filter> is filters when parameter binding is executed.
1333
+C<query> is if you don't execute sql and get L<DBIx::Custom::Query> object as return value.
1334
+default to 0. This is experimental.
1307 1335
 This is overwrites C<default_bind_filter>.
1308 1336
 Return value of C<update()> is the count of affected rows.
1309 1337
 
+15
t/dbix-custom-core-sqlite.t
... ...
@@ -799,3 +799,18 @@ is_deeply($row, {key1 => 1, key2 => 2});
799 799
 $result = $dbi->select(table => 'table1', where => [' ', {}]);
800 800
 $row = $result->fetch_hash_first;
801 801
 is_deeply($row, {key1 => 1, key2 => 2});
802
+
803
+
804
+test 'select query option';
805
+$dbi = DBIx::Custom->connect($NEW_ARGS->{0});
806
+$dbi->execute($CREATE_TABLE->{0});
807
+$query = $dbi->insert(table => 'table1', param => {key1 => 1, key2 => 2}, query => 1);
808
+is(ref $query, 'DBIx::Custom::Query');
809
+$query = $dbi->update(table => 'table1', where => {key1 => 1}, param => {key2 => 2}, query => 1);
810
+is(ref $query, 'DBIx::Custom::Query');
811
+$query = $dbi->delete(table => 'table1', where => {key1 => 1}, query => 1);
812
+is(ref $query, 'DBIx::Custom::Query');
813
+$query = $dbi->select(table => 'table1', where => {key1 => 1, key2 => 2}, query => 1);
814
+is(ref $query, 'DBIx::Custom::Query');
815
+
816
+1;