insert_at is DEPRECATED! added insert id and primary_ke...
...y option
... | ... |
@@ -1,6 +1,7 @@ |
1 | 1 |
0.1685 |
2 |
- - insert, insert_at, update, update_at can receive odd number arguments, |
|
3 |
- first one is parameter. |
|
2 |
+ - insert_at, update_at, delete_at, select_at is DEPRECATED! |
|
3 |
+ use insert, update, delete, select method and id option. |
|
4 |
+ - insert, insert_at, update, update_at can receive odd number arguments, first one is parameter. |
|
4 | 5 |
0.1684 |
5 | 6 |
- added DBIx::Custom::Result all method, this is alias for fetch_hash_all |
6 | 7 |
- added DBIx::Custom::Result one method, this is alias for fetch_hash_first |
... | ... |
@@ -22,7 +22,7 @@ use Encode qw/encode encode_utf8 decode_utf8/; |
22 | 22 |
use constant DEBUG => $ENV{DBIX_CUSTOM_DEBUG} || 0; |
23 | 23 |
use constant DEBUG_ENCODING => $ENV{DBIX_CUSTOM_DEBUG_ENCODING} || 'UTF-8'; |
24 | 24 |
|
25 |
-our @COMMON_ARGS = qw/table query filter type/; |
|
25 |
+our @COMMON_ARGS = qw/table query filter type id primary_key/; |
|
26 | 26 |
|
27 | 27 |
__PACKAGE__->attr( |
28 | 28 |
[qw/connector dsn password user/], |
... | ... |
@@ -571,7 +571,7 @@ sub execute { |
571 | 571 |
else { return $affected } |
572 | 572 |
} |
573 | 573 |
|
574 |
-our %INSERT_ARGS = map { $_ => 1 } @COMMON_ARGS, qw/param append/; |
|
574 |
+our %INSERT_ARGS = map { $_ => 1 } @COMMON_ARGS, qw/param/; |
|
575 | 575 |
|
576 | 576 |
sub insert { |
577 | 577 |
my $self = shift; |
... | ... |
@@ -587,6 +587,11 @@ sub insert { |
587 | 587 |
$param ||= $p; |
588 | 588 |
my $append = delete $args{append} || ''; |
589 | 589 |
my $query_return = delete $args{query}; |
590 |
+ my $id = delete $args{id}; |
|
591 |
+ my $primary_key = delete $args{primary_key}; |
|
592 |
+ croak "primary_key must be specified when id is specified" |
|
593 |
+ if defined $id && !defined $primary_key; |
|
594 |
+ $primary_key = [$primary_key] unless ref $primary_key eq 'ARRAY'; |
|
590 | 595 |
|
591 | 596 |
# Check arguments |
592 | 597 |
foreach my $name (keys %args) { |
... | ... |
@@ -594,6 +599,12 @@ sub insert { |
594 | 599 |
unless $INSERT_ARGS{$name}; |
595 | 600 |
} |
596 | 601 |
|
602 |
+ # Merge parameter |
|
603 |
+ if ($id) { |
|
604 |
+ my $id_param = $self->_create_where_param($id, $primary_key); |
|
605 |
+ $param = $self->merge_param($id_param, $param); |
|
606 |
+ } |
|
607 |
+ |
|
597 | 608 |
# Reserved word quote |
598 | 609 |
my $q = $self->reserved_word_quote; |
599 | 610 |
|
... | ... |
@@ -616,34 +627,6 @@ sub insert { |
616 | 627 |
); |
617 | 628 |
} |
618 | 629 |
|
619 |
-our %INSERT_AT_ARGS = (%INSERT_ARGS, where => 1, primary_key => 1); |
|
620 |
- |
|
621 |
-sub insert_at { |
|
622 |
- my $self = shift; |
|
623 |
- |
|
624 |
- # Arguments |
|
625 |
- my $param; |
|
626 |
- $param = shift if @_ % 2; |
|
627 |
- my %args = @_; |
|
628 |
- my $primary_keys = delete $args{primary_key}; |
|
629 |
- $primary_keys = [$primary_keys] unless ref $primary_keys; |
|
630 |
- my $where = delete $args{where}; |
|
631 |
- my $p = delete $args{param} || {}; |
|
632 |
- $param ||= $p; |
|
633 |
- |
|
634 |
- # Check arguments |
|
635 |
- foreach my $name (keys %args) { |
|
636 |
- croak qq{"$name" is wrong option } . _subname |
|
637 |
- unless $INSERT_AT_ARGS{$name}; |
|
638 |
- } |
|
639 |
- |
|
640 |
- # Create where parameter |
|
641 |
- my $where_param = $self->_create_where_param($where, $primary_keys); |
|
642 |
- $param = $self->merge_param($where_param, $param); |
|
643 |
- |
|
644 |
- return $self->insert(param => $param, %args); |
|
645 |
-} |
|
646 |
- |
|
647 | 630 |
sub insert_param { |
648 | 631 |
my ($self, $param) = @_; |
649 | 632 |
|
... | ... |
@@ -835,7 +818,7 @@ sub register_filter { |
835 | 818 |
|
836 | 819 |
our %SELECT_ARGS |
837 | 820 |
= map { $_ => 1 } @COMMON_ARGS, |
838 |
- qw/column where append relation join param where_param wrap/; |
|
821 |
+ qw/column where relation join param where_param wrap/; |
|
839 | 822 |
|
840 | 823 |
sub select { |
841 | 824 |
my ($self, %args) = @_; |
... | ... |
@@ -1006,7 +989,7 @@ sub setup_model { |
1006 | 989 |
} |
1007 | 990 |
|
1008 | 991 |
our %UPDATE_ARGS |
1009 |
- = map { $_ => 1 } @COMMON_ARGS, qw/param where append allow_update_all where_param/; |
|
992 |
+ = map { $_ => 1 } @COMMON_ARGS, qw/param where allow_update_all where_param/; |
|
1010 | 993 |
|
1011 | 994 |
sub update { |
1012 | 995 |
my $self = shift; |
... | ... |
@@ -1369,6 +1352,36 @@ sub _where_to_obj { |
1369 | 1352 |
return $obj; |
1370 | 1353 |
} |
1371 | 1354 |
|
1355 |
+# DEPRECATED! |
|
1356 |
+our %INSERT_AT_ARGS = (%INSERT_ARGS, where => 1, primary_key => 1); |
|
1357 |
+sub insert_at { |
|
1358 |
+ my $self = shift; |
|
1359 |
+ |
|
1360 |
+ warn "insert_at is DEPRECATED! use insert and id option instead"; |
|
1361 |
+ |
|
1362 |
+ # Arguments |
|
1363 |
+ my $param; |
|
1364 |
+ $param = shift if @_ % 2; |
|
1365 |
+ my %args = @_; |
|
1366 |
+ my $primary_key = delete $args{primary_key}; |
|
1367 |
+ $primary_key = [$primary_key] unless ref $primary_key; |
|
1368 |
+ my $where = delete $args{where}; |
|
1369 |
+ my $p = delete $args{param} || {}; |
|
1370 |
+ $param ||= $p; |
|
1371 |
+ |
|
1372 |
+ # Check arguments |
|
1373 |
+ foreach my $name (keys %args) { |
|
1374 |
+ croak qq{"$name" is wrong option } . _subname |
|
1375 |
+ unless $INSERT_AT_ARGS{$name}; |
|
1376 |
+ } |
|
1377 |
+ |
|
1378 |
+ # Create where parameter |
|
1379 |
+ my $where_param = $self->_create_where_param($where, $primary_key); |
|
1380 |
+ $param = $self->merge_param($where_param, $param); |
|
1381 |
+ |
|
1382 |
+ return $self->insert(param => $param, %args); |
|
1383 |
+} |
|
1384 |
+ |
|
1372 | 1385 |
# DEPRECATED! |
1373 | 1386 |
sub register_tag { |
1374 | 1387 |
warn "register_tag is DEPRECATED!"; |
... | ... |
@@ -2323,4 +2323,42 @@ $dbi->update( |
2323 | 2323 |
$rows = $dbi->select(table => 'table1')->fetch_hash_all; |
2324 | 2324 |
is_deeply($rows, [{key1 => 5, key2 => 2}]); |
2325 | 2325 |
|
2326 |
+test 'insert id and primary_key option'; |
|
2327 |
+$dbi = DBIx::Custom->connect($NEW_ARGS->{0}); |
|
2328 |
+$dbi->execute($CREATE_TABLE->{1}); |
|
2329 |
+$dbi->insert( |
|
2330 |
+ primary_key => ['key1', 'key2'], |
|
2331 |
+ table => 'table1', |
|
2332 |
+ id => [1, 2], |
|
2333 |
+ param => {key3 => 3} |
|
2334 |
+); |
|
2335 |
+is($dbi->select(table => 'table1')->one->{key1}, 1); |
|
2336 |
+is($dbi->select(table => 'table1')->one->{key2}, 2); |
|
2337 |
+is($dbi->select(table => 'table1')->one->{key3}, 3); |
|
2338 |
+ |
|
2339 |
+$dbi->delete_all(table => 'table1'); |
|
2340 |
+$dbi->insert(table => 'table1', param => {key1 => 1, key2 => 2, key3 => 3}); |
|
2341 |
+$dbi->insert( |
|
2342 |
+ primary_key => 'key1', |
|
2343 |
+ table => 'table1', |
|
2344 |
+ id => 1, |
|
2345 |
+ param => {key2 => 2, key3 => 3} |
|
2346 |
+); |
|
2347 |
+ |
|
2348 |
+is($dbi->select(table => 'table1')->one->{key1}, 1); |
|
2349 |
+is($dbi->select(table => 'table1')->one->{key2}, 2); |
|
2350 |
+is($dbi->select(table => 'table1')->one->{key3}, 3); |
|
2351 |
+ |
|
2352 |
+$dbi = DBIx::Custom->connect($NEW_ARGS->{0}); |
|
2353 |
+$dbi->execute($CREATE_TABLE->{1}); |
|
2354 |
+$dbi->insert( |
|
2355 |
+ {key3 => 3}, |
|
2356 |
+ primary_key => ['key1', 'key2'], |
|
2357 |
+ table => 'table1', |
|
2358 |
+ id => [1, 2], |
|
2359 |
+); |
|
2360 |
+is($dbi->select(table => 'table1')->one->{key1}, 1); |
|
2361 |
+is($dbi->select(table => 'table1')->one->{key2}, 2); |
|
2362 |
+is($dbi->select(table => 'table1')->one->{key3}, 3); |
|
2363 |
+ |
|
2326 | 2364 |
=cut |