| ... | ... | 
                  @@ -829,7 +829,13 @@ sub select {
                 | 
              
| 829 | 829 | 
                       my $where_param = delete $args{where_param} || $param || {};
                 | 
              
| 830 | 830 | 
                       my $query_return = $args{query};
                 | 
              
| 831 | 831 | 
                       my $wrap = delete $args{wrap};
                 | 
              
| 832 | 
                  -  | 
              |
| 832 | 
                  +    my $id = delete $args{id};
                 | 
              |
| 833 | 
                  +    my $primary_key = delete $args{primary_key};
                 | 
              |
| 834 | 
                  + croak "update method primary_key option " .  | 
              |
| 835 | 
                  + "must be specified when id is specified " . _subname  | 
              |
| 836 | 
                  + if defined $id && !defined $primary_key;  | 
              |
| 837 | 
                  + $primary_key = [$primary_key] unless ref $primary_key eq 'ARRAY';  | 
              |
| 838 | 
                  +  | 
              |
| 833 | 839 | 
                  # Check arguments  | 
              
| 834 | 840 | 
                       foreach my $name (keys %args) {
                 | 
              
| 835 | 841 | 
                           croak qq{"$name" is wrong option } . _subname
                 | 
              
| ... | ... | 
                  @@ -879,6 +885,7 @@ sub select {
                 | 
              
| 879 | 885 | 
                   | 
              
| 880 | 886 | 
                  # Where  | 
              
| 881 | 887 | 
                  my $where_clause = '';  | 
              
| 888 | 
                  + $where = $self->_create_param_from_id($id, $primary_key) if $id;  | 
              |
| 882 | 889 | 
                       if (ref $where) {
                 | 
              
| 883 | 890 | 
                  $where = $self->_where_to_obj($where);  | 
              
| 884 | 891 | 
                  $where_param = keys %$where_param  | 
              
| ... | ... | 
                  @@ -931,34 +938,6 @@ sub select {
                 | 
              
| 931 | 938 | 
                  return $result;  | 
              
| 932 | 939 | 
                  }  | 
              
| 933 | 940 | 
                   | 
              
| 934 | 
                  -our %SELECT_AT_ARGS = (%SELECT_ARGS, where => 1, primary_key => 1);  | 
              |
| 935 | 
                  -  | 
              |
| 936 | 
                  -sub select_at {
                 | 
              |
| 937 | 
                  - my ($self, %args) = @_;  | 
              |
| 938 | 
                  -  | 
              |
| 939 | 
                  - # Arguments  | 
              |
| 940 | 
                  -    my $primary_keys = delete $args{primary_key};
                 | 
              |
| 941 | 
                  - $primary_keys = [$primary_keys] unless ref $primary_keys;  | 
              |
| 942 | 
                  -    my $where = delete $args{where};
                 | 
              |
| 943 | 
                  -    my $param = delete $args{param};
                 | 
              |
| 944 | 
                  -  | 
              |
| 945 | 
                  - # Check arguments  | 
              |
| 946 | 
                  -    foreach my $name (keys %args) {
                 | 
              |
| 947 | 
                  -        croak qq{"$name" is wrong option } . _subname
                 | 
              |
| 948 | 
                  -          unless $SELECT_AT_ARGS{$name};
                 | 
              |
| 949 | 
                  - }  | 
              |
| 950 | 
                  -  | 
              |
| 951 | 
                  - # Table  | 
              |
| 952 | 
                  -    croak qq{"table" option must be specified } . _subname
                 | 
              |
| 953 | 
                  -      unless $args{table};
                 | 
              |
| 954 | 
                  -    my $table = ref $args{table} ? $args{table}->[-1] : $args{table};
                 | 
              |
| 955 | 
                  -  | 
              |
| 956 | 
                  - # Create where parameter  | 
              |
| 957 | 
                  - my $where_param = $self->_create_param_from_id($where, $primary_keys);  | 
              |
| 958 | 
                  -  | 
              |
| 959 | 
                  - return $self->select(where => $where_param, %args);  | 
              |
| 960 | 
                  -}  | 
              |
| 961 | 
                  -  | 
              |
| 962 | 941 | 
                   sub setup_model {
                 | 
              
| 963 | 942 | 
                  my $self = shift;  | 
              
| 964 | 943 | 
                   | 
              
| ... | ... | 
                  @@ -1316,6 +1295,34 @@ sub _where_to_obj {
                 | 
              
| 1316 | 1295 | 
                  return $obj;  | 
              
| 1317 | 1296 | 
                  }  | 
              
| 1318 | 1297 | 
                   | 
              
| 1298 | 
                  +# DEPRECATED!  | 
              |
| 1299 | 
                  +our %SELECT_AT_ARGS = (%SELECT_ARGS, where => 1, primary_key => 1);  | 
              |
| 1300 | 
                  +sub select_at {
                 | 
              |
| 1301 | 
                  + my ($self, %args) = @_;  | 
              |
| 1302 | 
                  +  | 
              |
| 1303 | 
                  + # Arguments  | 
              |
| 1304 | 
                  +    my $primary_keys = delete $args{primary_key};
                 | 
              |
| 1305 | 
                  + $primary_keys = [$primary_keys] unless ref $primary_keys;  | 
              |
| 1306 | 
                  +    my $where = delete $args{where};
                 | 
              |
| 1307 | 
                  +    my $param = delete $args{param};
                 | 
              |
| 1308 | 
                  +  | 
              |
| 1309 | 
                  + # Check arguments  | 
              |
| 1310 | 
                  +    foreach my $name (keys %args) {
                 | 
              |
| 1311 | 
                  +        croak qq{"$name" is wrong option } . _subname
                 | 
              |
| 1312 | 
                  +          unless $SELECT_AT_ARGS{$name};
                 | 
              |
| 1313 | 
                  + }  | 
              |
| 1314 | 
                  +  | 
              |
| 1315 | 
                  + # Table  | 
              |
| 1316 | 
                  +    croak qq{"table" option must be specified } . _subname
                 | 
              |
| 1317 | 
                  +      unless $args{table};
                 | 
              |
| 1318 | 
                  +    my $table = ref $args{table} ? $args{table}->[-1] : $args{table};
                 | 
              |
| 1319 | 
                  +  | 
              |
| 1320 | 
                  + # Create where parameter  | 
              |
| 1321 | 
                  + my $where_param = $self->_create_param_from_id($where, $primary_keys);  | 
              |
| 1322 | 
                  +  | 
              |
| 1323 | 
                  + return $self->select(where => $where_param, %args);  | 
              |
| 1324 | 
                  +}  | 
              |
| 1325 | 
                  +  | 
              |
| 1319 | 1326 | 
                  # DEPRECATED!  | 
              
| 1320 | 1327 | 
                  our %DELETE_AT_ARGS = (%DELETE_ARGS, where => 1, primary_key => 1);  | 
              
| 1321 | 1328 | 
                   sub delete_at {
                 | 
              
| ... | ... | 
                  @@ -2466,4 +2466,54 @@ $dbi->insert(table => 'table3', param => {key1 => 1, key2 => 2, key3 => 3});
                 | 
              
| 2466 | 2466 | 
                   $dbi->model('table1_3')->delete(id => [1, 2]);
                 | 
              
| 2467 | 2467 | 
                  is_deeply($dbi->select(table => 'table1')->fetch_hash_all, []);  | 
              
| 2468 | 2468 | 
                   | 
              
| 2469 | 
                  +  | 
              |
| 2470 | 
                  +test 'select and id option';  | 
              |
| 2471 | 
                  +$dbi = DBIx::Custom->connect($NEW_ARGS->{0});
                 | 
              |
| 2472 | 
                  +$dbi->execute($CREATE_TABLE->{1});
                 | 
              |
| 2473 | 
                  +$dbi->insert(table => 'table1', param => {key1 => 1, key2 => 2, key3 => 3});
                 | 
              |
| 2474 | 
                  +$result = $dbi->select(  | 
              |
| 2475 | 
                  + table => 'table1',  | 
              |
| 2476 | 
                  + primary_key => ['key1', 'key2'],  | 
              |
| 2477 | 
                  + id => [1, 2]  | 
              |
| 2478 | 
                  +);  | 
              |
| 2479 | 
                  +$row = $result->one;  | 
              |
| 2480 | 
                  +is($row->{key1}, 1);
                 | 
              |
| 2481 | 
                  +is($row->{key2}, 2);
                 | 
              |
| 2482 | 
                  +is($row->{key3}, 3);
                 | 
              |
| 2483 | 
                  +  | 
              |
| 2484 | 
                  +$dbi->delete_all(table => 'table1');  | 
              |
| 2485 | 
                  +$dbi->insert(table => 'table1', param => {key1 => 1, key2 => 2, key3 => 3});
                 | 
              |
| 2486 | 
                  +$result = $dbi->select(  | 
              |
| 2487 | 
                  + table => 'table1',  | 
              |
| 2488 | 
                  + primary_key => 'key1',  | 
              |
| 2489 | 
                  + id => 1,  | 
              |
| 2490 | 
                  +);  | 
              |
| 2491 | 
                  +$row = $result->one;  | 
              |
| 2492 | 
                  +is($row->{key1}, 1);
                 | 
              |
| 2493 | 
                  +is($row->{key2}, 2);
                 | 
              |
| 2494 | 
                  +is($row->{key3}, 3);
                 | 
              |
| 2495 | 
                  +  | 
              |
| 2496 | 
                  +$dbi->delete_all(table => 'table1');  | 
              |
| 2497 | 
                  +$dbi->insert(table => 'table1', param => {key1 => 1, key2 => 2, key3 => 3});
                 | 
              |
| 2498 | 
                  +$result = $dbi->select(  | 
              |
| 2499 | 
                  + table => 'table1',  | 
              |
| 2500 | 
                  + primary_key => ['key1', 'key2'],  | 
              |
| 2501 | 
                  + id => [1, 2]  | 
              |
| 2502 | 
                  +);  | 
              |
| 2503 | 
                  +$row = $result->one;  | 
              |
| 2504 | 
                  +is($row->{key1}, 1);
                 | 
              |
| 2505 | 
                  +is($row->{key2}, 2);
                 | 
              |
| 2506 | 
                  +is($row->{key3}, 3);
                 | 
              |
| 2507 | 
                  +  | 
              |
| 2508 | 
                  +  | 
              |
| 2509 | 
                  +test 'model select_at';  | 
              |
| 2510 | 
                  +$dbi = MyDBI6->connect($NEW_ARGS->{0});
                 | 
              |
| 2511 | 
                  +$dbi->execute($CREATE_TABLE->{1});
                 | 
              |
| 2512 | 
                  +$dbi->insert(table => 'table1', param => {key1 => 1, key2 => 2, key3 => 3});
                 | 
              |
| 2513 | 
                  +$result = $dbi->model('table1')->select(id => [1, 2]);
                 | 
              |
| 2514 | 
                  +$row = $result->one;  | 
              |
| 2515 | 
                  +is($row->{key1}, 1);
                 | 
              |
| 2516 | 
                  +is($row->{key2}, 2);
                 | 
              |
| 2517 | 
                  +is($row->{key3}, 3);
                 | 
              |
| 2518 | 
                  +  | 
              |
| 2469 | 2519 | 
                  =cut  |