| ... | ... |
@@ -1,4 +1,5 @@ |
| 1 | 1 |
0.1733 |
| 2 |
+ - delete method where_param option is DEPRECATED! |
|
| 2 | 3 |
- update method where_param option is DEPRECATED! |
| 3 | 4 |
- update method param option is DEPRECATED! |
| 4 | 5 |
- insert method param option is DEPRECATED! |
| ... | ... |
@@ -229,42 +229,54 @@ sub dbh {
|
| 229 | 229 |
} |
| 230 | 230 |
} |
| 231 | 231 |
|
| 232 |
-sub delete {
|
|
| 233 |
- my ($self, %opt) = @_; |
|
| 234 |
- |
|
| 235 |
- # Arguments |
|
| 236 |
- my $where = $opt{where} || {};
|
|
| 237 |
- my $where_param = $opt{where_param} || {};
|
|
| 238 |
- |
|
| 239 |
- # Where |
|
| 240 |
- $where = $self->_id_to_param($opt{id}, $opt{primary_key}, $opt{table})
|
|
| 241 |
- if defined $opt{id};
|
|
| 232 |
+sub _where_clause_and_param {
|
|
| 233 |
+ my ($self, $where, $param) = @_; |
|
| 234 |
+ |
|
| 235 |
+ $where ||= {};
|
|
| 236 |
+ $param ||= {};
|
|
| 237 |
+ my $w = {};
|
|
| 242 | 238 |
my $where_clause = ''; |
| 243 | 239 |
if (ref $where eq 'ARRAY' && !ref $where->[0]) {
|
| 244 |
- $where_clause = "where " . $where->[0]; |
|
| 245 |
- $where_param = $where->[1]; |
|
| 240 |
+ $w->{clause} = "where " . $where->[0];
|
|
| 241 |
+ $w->{param} = $where->[1];
|
|
| 246 | 242 |
} |
| 247 | 243 |
elsif (ref $where) {
|
| 248 | 244 |
$where = $self->_where_to_obj($where); |
| 249 |
- $where_param = keys %$where_param |
|
| 250 |
- ? $self->merge_param($where_param, $where->param) |
|
| 251 |
- : $where->param; |
|
| 252 |
- |
|
| 253 |
- # String where |
|
| 254 |
- $where_clause = $where->to_string; |
|
| 245 |
+ $w->{param} = keys %$param
|
|
| 246 |
+ ? $self->merge_param($param, $where->param) |
|
| 247 |
+ : $where->param; |
|
| 248 |
+ $w->{clause} = $where->to_string;
|
|
| 255 | 249 |
} |
| 256 |
- elsif ($where) { $where_clause = "where $where" }
|
|
| 257 |
- croak qq{"where" must be specified } . _subname
|
|
| 258 |
- if $where_clause eq '' && !$opt{allow_delete_all};
|
|
| 250 |
+ elsif ($where) {
|
|
| 251 |
+ $w->{clause} = "where $where";
|
|
| 252 |
+ $w->{param} = $param;
|
|
| 253 |
+ } |
|
| 254 |
+ |
|
| 255 |
+ return $w; |
|
| 256 |
+} |
|
| 257 |
+ |
|
| 258 |
+sub delete {
|
|
| 259 |
+ my ($self, %opt) = @_; |
|
| 260 |
+ warn "delete method where_param option is DEPRECATED!" |
|
| 261 |
+ if $opt{where_param};
|
|
| 262 |
+ |
|
| 263 |
+ # Don't allow delete all row |
|
| 264 |
+ croak qq{delete method where or id option must be specified } . _subname
|
|
| 265 |
+ if !$opt{where} && !defined $opt{id} && !$opt{allow_delete_all};
|
|
| 266 |
+ |
|
| 267 |
+ # Where |
|
| 268 |
+ my $where = defined $opt{id}
|
|
| 269 |
+ ? $self->_id_to_param($opt{id}, $opt{primary_key}, $opt{table})
|
|
| 270 |
+ : $opt{where};
|
|
| 271 |
+ my $w = $self->_where_clause_and_param($where, $opt{where_param});
|
|
| 259 | 272 |
|
| 260 | 273 |
# Delete statement |
| 261 |
- my $sql; |
|
| 262 |
- $sql .= "delete "; |
|
| 274 |
+ my $sql = "delete "; |
|
| 263 | 275 |
$sql .= "$opt{prefix} " if defined $opt{prefix};
|
| 264 |
- $sql .= "from " . $self->_q($opt{table}) . " $where_clause ";
|
|
| 276 |
+ $sql .= "from " . $self->_q($opt{table}) . " $w->{clause} ";
|
|
| 265 | 277 |
|
| 266 | 278 |
# Execute query |
| 267 |
- return $self->execute($sql, $where_param, %opt); |
|
| 279 |
+ return $self->execute($sql, $w->{param}, %opt);
|
|
| 268 | 280 |
} |
| 269 | 281 |
|
| 270 | 282 |
sub delete_all { shift->delete(allow_delete_all => 1, @_) }
|
| ... | ... |
@@ -3427,6 +3439,7 @@ L<DBIx::Custom> |
| 3427 | 3439 |
update_param_tag # will be removed at 2017/1/1 |
| 3428 | 3440 |
|
| 3429 | 3441 |
# Options |
| 3442 |
+ delete method where_param option # will be removed 2017/1/1 |
|
| 3430 | 3443 |
update method where_param option # will be removed 2017/1/1 |
| 3431 | 3444 |
insert method param option # will be removed at 2017/1/1 |
| 3432 | 3445 |
insert method id option # will be removed at 2017/1/1 |
| ... | ... |
@@ -836,8 +836,7 @@ test 'delete error'; |
| 836 | 836 |
eval { $dbi->execute("drop table $table1") };
|
| 837 | 837 |
$dbi->execute($create_table1); |
| 838 | 838 |
eval{$dbi->delete(table => $table1)};
|
| 839 |
-like($@, qr/"where" must be specified/, |
|
| 840 |
- "where key-value pairs not specified"); |
|
| 839 |
+like($@, qr/where/, "where key-value pairs not specified"); |
|
| 841 | 840 |
|
| 842 | 841 |
eval{$dbi->delete(table => $table1, where => {';' => 1})};
|
| 843 | 842 |
like($@, qr/safety/); |