... | ... |
@@ -302,8 +302,15 @@ sub delete { |
302 | 302 |
my $allow_delete_all = delete $args{allow_delete_all}; |
303 | 303 |
my $query_return = delete $args{query}; |
304 | 304 |
my $where_param = delete $args{where_param} || {}; |
305 |
- |
|
305 |
+ my $id = delete $args{id}; |
|
306 |
+ my $primary_key = delete $args{primary_key}; |
|
307 |
+ croak "update method primary_key option " . |
|
308 |
+ "must be specified when id is specified " . _subname |
|
309 |
+ if defined $id && !defined $primary_key; |
|
310 |
+ $primary_key = [$primary_key] unless ref $primary_key eq 'ARRAY'; |
|
311 |
+ |
|
306 | 312 |
# Where |
313 |
+ $where = $self->_create_param_from_id($id, $primary_key) if $id; |
|
307 | 314 |
my $where_clause = ''; |
308 | 315 |
if (ref $where) { |
309 | 316 |
$where = $self->_where_to_obj($where); |
... | ... |
@@ -340,28 +347,6 @@ sub delete { |
340 | 347 |
|
341 | 348 |
sub delete_all { shift->delete(allow_delete_all => 1, @_) } |
342 | 349 |
|
343 |
-our %DELETE_AT_ARGS = (%DELETE_ARGS, where => 1, primary_key => 1); |
|
344 |
- |
|
345 |
-sub delete_at { |
|
346 |
- my ($self, %args) = @_; |
|
347 |
- |
|
348 |
- # Arguments |
|
349 |
- my $primary_keys = delete $args{primary_key}; |
|
350 |
- $primary_keys = [$primary_keys] unless ref $primary_keys; |
|
351 |
- my $where = delete $args{where}; |
|
352 |
- |
|
353 |
- # Check arguments |
|
354 |
- foreach my $name (keys %args) { |
|
355 |
- croak qq{"$name" is wrong option } . _subname |
|
356 |
- unless $DELETE_AT_ARGS{$name}; |
|
357 |
- } |
|
358 |
- |
|
359 |
- # Create where parameter |
|
360 |
- my $where_param = $self->_create_param_from_id($where, $primary_keys); |
|
361 |
- |
|
362 |
- return $self->delete(where => $where_param, %args); |
|
363 |
-} |
|
364 |
- |
|
365 | 350 |
sub DESTROY { } |
366 | 351 |
|
367 | 352 |
sub create_model { |
... | ... |
@@ -1331,6 +1316,28 @@ sub _where_to_obj { |
1331 | 1316 |
return $obj; |
1332 | 1317 |
} |
1333 | 1318 |
|
1319 |
+# DEPRECATED! |
|
1320 |
+our %DELETE_AT_ARGS = (%DELETE_ARGS, where => 1, primary_key => 1); |
|
1321 |
+sub delete_at { |
|
1322 |
+ my ($self, %args) = @_; |
|
1323 |
+ |
|
1324 |
+ # Arguments |
|
1325 |
+ my $primary_keys = delete $args{primary_key}; |
|
1326 |
+ $primary_keys = [$primary_keys] unless ref $primary_keys; |
|
1327 |
+ my $where = delete $args{where}; |
|
1328 |
+ |
|
1329 |
+ # Check arguments |
|
1330 |
+ foreach my $name (keys %args) { |
|
1331 |
+ croak qq{"$name" is wrong option } . _subname |
|
1332 |
+ unless $DELETE_AT_ARGS{$name}; |
|
1333 |
+ } |
|
1334 |
+ |
|
1335 |
+ # Create where parameter |
|
1336 |
+ my $where_param = $self->_create_param_from_id($where, $primary_keys); |
|
1337 |
+ |
|
1338 |
+ return $self->delete(where => $where_param, %args); |
|
1339 |
+} |
|
1340 |
+ |
|
1334 | 1341 |
# DEPRECATED! |
1335 | 1342 |
our %UPDATE_AT_ARGS = (%UPDATE_ARGS, where => 1, primary_key => 1); |
1336 | 1343 |
sub update_at { |
... | ... |
@@ -2416,7 +2416,7 @@ is($dbi->select(table => 'table1')->one->{key2}, 2); |
2416 | 2416 |
is($dbi->select(table => 'table1')->one->{key3}, 4); |
2417 | 2417 |
|
2418 | 2418 |
|
2419 |
-test 'model update_at'; |
|
2419 |
+test 'model update and id option'; |
|
2420 | 2420 |
$dbi = MyDBI6->connect($NEW_ARGS->{0}); |
2421 | 2421 |
$dbi->execute($CREATE_TABLE->{1}); |
2422 | 2422 |
$dbi->insert(table => 'table1', param => {key1 => 1, key2 => 2, key3 => 3}); |
... | ... |
@@ -2430,4 +2430,40 @@ is($row->{key1}, 1); |
2430 | 2430 |
is($row->{key2}, 2); |
2431 | 2431 |
is($row->{key3}, 4); |
2432 | 2432 |
|
2433 |
+ |
|
2434 |
+test 'delete and id option'; |
|
2435 |
+$dbi = DBIx::Custom->connect($NEW_ARGS->{0}); |
|
2436 |
+$dbi->execute($CREATE_TABLE->{1}); |
|
2437 |
+$dbi->insert(table => 'table1', param => {key1 => 1, key2 => 2, key3 => 3}); |
|
2438 |
+$dbi->delete( |
|
2439 |
+ table => 'table1', |
|
2440 |
+ primary_key => ['key1', 'key2'], |
|
2441 |
+ id => [1, 2], |
|
2442 |
+); |
|
2443 |
+is_deeply($dbi->select(table => 'table1')->fetch_hash_all, []); |
|
2444 |
+ |
|
2445 |
+$dbi->insert(table => 'table1', param => {key1 => 1, key2 => 2, key3 => 3}); |
|
2446 |
+$dbi->delete( |
|
2447 |
+ table => 'table1', |
|
2448 |
+ primary_key => 'key1', |
|
2449 |
+ id => 1, |
|
2450 |
+); |
|
2451 |
+is_deeply($dbi->select(table => 'table1')->fetch_hash_all, []); |
|
2452 |
+ |
|
2453 |
+ |
|
2454 |
+test 'model delete and id option'; |
|
2455 |
+$dbi = MyDBI6->connect($NEW_ARGS->{0}); |
|
2456 |
+$dbi->execute($CREATE_TABLE->{1}); |
|
2457 |
+$dbi->execute("create table table2 (key1, key2, key3)"); |
|
2458 |
+$dbi->execute("create table table3 (key1, key2, key3)"); |
|
2459 |
+$dbi->insert(table => 'table1', param => {key1 => 1, key2 => 2, key3 => 3}); |
|
2460 |
+$dbi->model('table1')->delete(id => [1, 2]); |
|
2461 |
+is_deeply($dbi->select(table => 'table1')->fetch_hash_all, []); |
|
2462 |
+$dbi->insert(table => 'table2', param => {key1 => 1, key2 => 2, key3 => 3}); |
|
2463 |
+$dbi->model('table1_1')->delete(id => [1, 2]); |
|
2464 |
+is_deeply($dbi->select(table => 'table1')->fetch_hash_all, []); |
|
2465 |
+$dbi->insert(table => 'table3', param => {key1 => 1, key2 => 2, key3 => 3}); |
|
2466 |
+$dbi->model('table1_3')->delete(id => [1, 2]); |
|
2467 |
+is_deeply($dbi->select(table => 'table1')->fetch_hash_all, []); |
|
2468 |
+ |
|
2433 | 2469 |
=cut |