... | ... |
@@ -357,7 +357,7 @@ sub delete_at { |
357 | 357 |
} |
358 | 358 |
|
359 | 359 |
# Create where parameter |
360 |
- my $where_param = $self->_create_where_param($where, $primary_keys); |
|
360 |
+ my $where_param = $self->_create_param_from_id($where, $primary_keys); |
|
361 | 361 |
|
362 | 362 |
return $self->delete(where => $where_param, %args); |
363 | 363 |
} |
... | ... |
@@ -589,7 +589,7 @@ sub insert { |
589 | 589 |
my $query_return = delete $args{query}; |
590 | 590 |
my $id = delete $args{id}; |
591 | 591 |
my $primary_key = delete $args{primary_key}; |
592 |
- croak "select method primary_key option " . |
|
592 |
+ croak "insert method primary_key option " . |
|
593 | 593 |
"must be specified when id is specified " . _subname |
594 | 594 |
if defined $id && !defined $primary_key; |
595 | 595 |
$primary_key = [$primary_key] unless ref $primary_key eq 'ARRAY'; |
... | ... |
@@ -602,7 +602,7 @@ sub insert { |
602 | 602 |
|
603 | 603 |
# Merge parameter |
604 | 604 |
if ($id) { |
605 |
- my $id_param = $self->_create_where_param($id, $primary_key); |
|
605 |
+ my $id_param = $self->_create_param_from_id($id, $primary_key); |
|
606 | 606 |
$param = $self->merge_param($id_param, $param); |
607 | 607 |
} |
608 | 608 |
|
... | ... |
@@ -969,7 +969,7 @@ sub select_at { |
969 | 969 |
my $table = ref $args{table} ? $args{table}->[-1] : $args{table}; |
970 | 970 |
|
971 | 971 |
# Create where parameter |
972 |
- my $where_param = $self->_create_where_param($where, $primary_keys); |
|
972 |
+ my $where_param = $self->_create_param_from_id($where, $primary_keys); |
|
973 | 973 |
|
974 | 974 |
return $self->select(where => $where_param, %args); |
975 | 975 |
} |
... | ... |
@@ -1008,6 +1008,12 @@ sub update { |
1008 | 1008 |
my $where_param = delete $args{where_param} || {}; |
1009 | 1009 |
my $append = delete $args{append} || ''; |
1010 | 1010 |
my $allow_update_all = delete $args{allow_update_all}; |
1011 |
+ my $id = delete $args{id}; |
|
1012 |
+ my $primary_key = delete $args{primary_key}; |
|
1013 |
+ croak "update method primary_key option " . |
|
1014 |
+ "must be specified when id is specified " . _subname |
|
1015 |
+ if defined $id && !defined $primary_key; |
|
1016 |
+ $primary_key = [$primary_key] unless ref $primary_key eq 'ARRAY'; |
|
1011 | 1017 |
|
1012 | 1018 |
# Check argument names |
1013 | 1019 |
foreach my $name (keys %args) { |
... | ... |
@@ -1062,33 +1068,6 @@ sub update { |
1062 | 1068 |
|
1063 | 1069 |
sub update_all { shift->update(allow_update_all => 1, @_) }; |
1064 | 1070 |
|
1065 |
-our %UPDATE_AT_ARGS = (%UPDATE_ARGS, where => 1, primary_key => 1); |
|
1066 |
- |
|
1067 |
-sub update_at { |
|
1068 |
- my $self = shift; |
|
1069 |
- |
|
1070 |
- # Arguments |
|
1071 |
- my $param; |
|
1072 |
- $param = shift if @_ % 2; |
|
1073 |
- my %args = @_; |
|
1074 |
- my $primary_keys = delete $args{primary_key}; |
|
1075 |
- $primary_keys = [$primary_keys] unless ref $primary_keys; |
|
1076 |
- my $where = delete $args{where}; |
|
1077 |
- my $p = delete $args{param} || {}; |
|
1078 |
- $param ||= $p; |
|
1079 |
- |
|
1080 |
- # Check arguments |
|
1081 |
- foreach my $name (keys %args) { |
|
1082 |
- croak qq{"$name" is wrong option } . _subname |
|
1083 |
- unless $UPDATE_AT_ARGS{$name}; |
|
1084 |
- } |
|
1085 |
- |
|
1086 |
- # Create where parameter |
|
1087 |
- my $where_param = $self->_create_where_param($where, $primary_keys); |
|
1088 |
- |
|
1089 |
- return $self->update(where => $where_param, param => $param, %args); |
|
1090 |
-} |
|
1091 |
- |
|
1092 | 1071 |
sub update_param { |
1093 | 1072 |
my ($self, $param, $opt) = @_; |
1094 | 1073 |
|
... | ... |
@@ -1156,27 +1135,25 @@ sub _create_bind_values { |
1156 | 1135 |
return $bind; |
1157 | 1136 |
} |
1158 | 1137 |
|
1159 |
-sub _create_where_param { |
|
1160 |
- my ($self, $where, $primary_keys) = @_; |
|
1138 |
+sub _create_param_from_id { |
|
1139 |
+ my ($self, $id, $primary_keys) = @_; |
|
1161 | 1140 |
|
1162 |
- # Create where parameter |
|
1163 |
- my $where_param = {}; |
|
1164 |
- if ($where) { |
|
1165 |
- $where = [$where] unless ref $where; |
|
1166 |
- croak qq{"where" must be constant value or array reference} |
|
1141 |
+ # Create parameter |
|
1142 |
+ my $param = {}; |
|
1143 |
+ if ($id) { |
|
1144 |
+ $id = [$id] unless ref $id; |
|
1145 |
+ croak qq{"id" must be constant value or array reference} |
|
1167 | 1146 |
. " (" . (caller 1)[3] . ")" |
1168 |
- unless !ref $where || ref $where eq 'ARRAY'; |
|
1169 |
- |
|
1170 |
- croak qq{"where" must contain values same count as primary key} |
|
1147 |
+ unless !ref $id || ref $id eq 'ARRAY'; |
|
1148 |
+ croak qq{"id" must contain values same count as primary key} |
|
1171 | 1149 |
. " (" . (caller 1)[3] . ")" |
1172 |
- unless @$primary_keys eq @$where; |
|
1173 |
- |
|
1150 |
+ unless @$primary_keys eq @$id; |
|
1174 | 1151 |
for(my $i = 0; $i < @$primary_keys; $i ++) { |
1175 |
- $where_param->{$primary_keys->[$i]} = $where->[$i]; |
|
1152 |
+ $param->{$primary_keys->[$i]} = $id->[$i]; |
|
1176 | 1153 |
} |
1177 | 1154 |
} |
1178 | 1155 |
|
1179 |
- return $where_param; |
|
1156 |
+ return $param; |
|
1180 | 1157 |
} |
1181 | 1158 |
|
1182 | 1159 |
sub _connect { |
... | ... |
@@ -1353,6 +1330,35 @@ sub _where_to_obj { |
1353 | 1330 |
return $obj; |
1354 | 1331 |
} |
1355 | 1332 |
|
1333 |
+# DEPRECATED! |
|
1334 |
+our %UPDATE_AT_ARGS = (%UPDATE_ARGS, where => 1, primary_key => 1); |
|
1335 |
+sub update_at { |
|
1336 |
+ my $self = shift; |
|
1337 |
+ |
|
1338 |
+ warn "update_at is DEPRECATED! use update and id option instead"; |
|
1339 |
+ |
|
1340 |
+ # Arguments |
|
1341 |
+ my $param; |
|
1342 |
+ $param = shift if @_ % 2; |
|
1343 |
+ my %args = @_; |
|
1344 |
+ my $primary_keys = delete $args{primary_key}; |
|
1345 |
+ $primary_keys = [$primary_keys] unless ref $primary_keys; |
|
1346 |
+ my $where = delete $args{where}; |
|
1347 |
+ my $p = delete $args{param} || {}; |
|
1348 |
+ $param ||= $p; |
|
1349 |
+ |
|
1350 |
+ # Check arguments |
|
1351 |
+ foreach my $name (keys %args) { |
|
1352 |
+ croak qq{"$name" is wrong option } . _subname |
|
1353 |
+ unless $UPDATE_AT_ARGS{$name}; |
|
1354 |
+ } |
|
1355 |
+ |
|
1356 |
+ # Create where parameter |
|
1357 |
+ my $where_param = $self->_create_param_from_id($where, $primary_keys); |
|
1358 |
+ |
|
1359 |
+ return $self->update(where => $where_param, param => $param, %args); |
|
1360 |
+} |
|
1361 |
+ |
|
1356 | 1362 |
# DEPRECATED! |
1357 | 1363 |
our %INSERT_AT_ARGS = (%INSERT_ARGS, where => 1, primary_key => 1); |
1358 | 1364 |
sub insert_at { |
... | ... |
@@ -1377,7 +1383,7 @@ sub insert_at { |
1377 | 1383 |
} |
1378 | 1384 |
|
1379 | 1385 |
# Create where parameter |
1380 |
- my $where_param = $self->_create_where_param($where, $primary_key); |
|
1386 |
+ my $where_param = $self->_create_param_from_id($where, $primary_key); |
|
1381 | 1387 |
$param = $self->merge_param($where_param, $param); |
1382 | 1388 |
|
1383 | 1389 |
return $self->insert(param => $param, %args); |
... | ... |
@@ -2323,6 +2323,7 @@ $dbi->update( |
2323 | 2323 |
$rows = $dbi->select(table => 'table1')->fetch_hash_all; |
2324 | 2324 |
is_deeply($rows, [{key1 => 5, key2 => 2}]); |
2325 | 2325 |
|
2326 |
+ |
|
2326 | 2327 |
test 'insert id and primary_key option'; |
2327 | 2328 |
$dbi = DBIx::Custom->connect($NEW_ARGS->{0}); |
2328 | 2329 |
$dbi->execute($CREATE_TABLE->{1}); |
... | ... |
@@ -2361,6 +2362,7 @@ is($dbi->select(table => 'table1')->one->{key1}, 1); |
2361 | 2362 |
is($dbi->select(table => 'table1')->one->{key2}, 2); |
2362 | 2363 |
is($dbi->select(table => 'table1')->one->{key3}, 3); |
2363 | 2364 |
|
2365 |
+ |
|
2364 | 2366 |
test 'model insert id and primary_key option'; |
2365 | 2367 |
$dbi = MyDBI6->connect($NEW_ARGS->{0}); |
2366 | 2368 |
$dbi->execute($CREATE_TABLE->{1}); |