Showing 3 changed files with 31 additions and 46 deletions
+10 -23
lib/DBIx/Custom.pm
... ...
@@ -1088,24 +1088,12 @@ sub update {
1088 1088
     my $self = shift;
1089 1089
 
1090 1090
     # Arguments
1091
-    my $param;
1092
-    $param = shift if @_ % 2;
1091
+    my $param = @_ % 2 ? shift : undef;
1093 1092
     my %opt = @_;
1094
-    my $table = $opt{table} || '';
1095
-    croak qq{"table" option must be specified } . _subname
1096
-      unless $table;
1097
-    my $p = $opt{param} || {};
1098
-    $param  ||= $p;
1093
+    warn "update param option is DEPRECATED!" if $opt{param};
1094
+    $param ||= $opt{param} || {};
1099 1095
     my $where = $opt{where} || {};
1100 1096
     my $where_param = $opt{where_param} || {};
1101
-    my $allow_update_all = $opt{allow_update_all};
1102
-    my $id = $opt{id};
1103
-    my $primary_key = $opt{primary_key};
1104
-    croak "update method primary_key option " .
1105
-          "must be specified when id is specified " . _subname
1106
-      if defined $id && !defined $primary_key;
1107
-    $primary_key = [$primary_key] unless ref $primary_key eq 'ARRAY';
1108
-    my $prefix = $opt{prefix};
1109 1097
     
1110 1098
     # Timestamp
1111 1099
     if ($opt{timestamp} && (my $update_timestamp = $self->update_timestamp)) {
... ...
@@ -1116,12 +1104,12 @@ sub update {
1116 1104
         $param->{$_} = $value for @$columns;
1117 1105
     }
1118 1106
 
1119
-    # Update clause
1107
+    # Assign clause
1120 1108
     my $assign_clause = $self->assign_clause($param, {wrap => $opt{wrap}});
1121 1109
 
1122 1110
     # Where
1123
-    $where = $self->_id_to_param($id, $primary_key, $table)
1124
-      if defined $id;
1111
+    $where = $self->_id_to_param($opt{id}, $opt{primary_key}, $opt{table})
1112
+      if defined $opt{id};
1125 1113
     my $where_clause = '';
1126 1114
     if (ref $where eq 'ARRAY' && !ref $where->[0]) {
1127 1115
         $where_clause = "where " . $where->[0];
... ...
@@ -1138,16 +1126,15 @@ sub update {
1138 1126
     }
1139 1127
     elsif ($where) { $where_clause = "where $where" }
1140 1128
     croak qq{"where" must be specified } . _subname
1141
-      if "$where_clause" eq '' && !$allow_update_all;
1129
+      if "$where_clause" eq '' && !$opt{allow_update_all};
1142 1130
     
1143 1131
     # Merge param
1144 1132
     $param = $self->merge_param($param, $where_param) if keys %$where_param;
1145 1133
     
1146 1134
     # Update statement
1147
-    my $sql;
1148
-    $sql .= "update ";
1149
-    $sql .= "$prefix " if defined $prefix;
1150
-    $sql .= $self->_q($table) . " set $assign_clause $where_clause ";
1135
+    my $sql = "update ";
1136
+    $sql .= "$opt{prefix} " if defined $opt{prefix};
1137
+    $sql .= $self->_q($opt{table}) . " set $assign_clause $where_clause ";
1151 1138
     
1152 1139
     # Execute query
1153 1140
     return $self->execute($sql, $param, %opt);
-2
t/common.t
... ...
@@ -1664,8 +1664,6 @@ is($dbi->{_tags}->{b}->(), 2);
1664 1664
 
1665 1665
 test 'table not specify exception';
1666 1666
 $dbi = DBIx::Custom->connect;
1667
-eval {$dbi->update};
1668
-like($@, qr/table/);
1669 1667
 eval {$dbi->delete};
1670 1668
 like($@, qr/table/);
1671 1669
 eval {$dbi->select};
+21 -21
t/sqlite.t
... ...
@@ -51,8 +51,8 @@ test 'prefix';
51 51
 $dbi = DBIx::Custom->connect;
52 52
 eval { $dbi->execute('drop table table1') };
53 53
 $dbi->execute('create table table1 (key1 varchar, key2 varchar, primary key(key1));');
54
-$dbi->insert(table => 'table1', param => {key1 => 1, key2 => 2});
55
-$dbi->insert(table => 'table1', param => {key1 => 1, key2 => 4}, prefix => 'or replace');
54
+$dbi->insert({key1 => 1, key2 => 2}, table => 'table1');
55
+$dbi->insert({key1 => 1, key2 => 4}, table => 'table1', prefix => 'or replace');
56 56
 $result = $dbi->execute('select * from table1;');
57 57
 $rows   = $result->all;
58 58
 is_deeply($rows, [{key1 => 1, key2 => 4}], "basic");
... ...
@@ -60,8 +60,8 @@ is_deeply($rows, [{key1 => 1, key2 => 4}], "basic");
60 60
 $dbi = DBIx::Custom->connect;
61 61
 eval { $dbi->execute('drop table table1') };
62 62
 $dbi->execute('create table table1 (key1 varchar, key2 varchar, primary key(key1));');
63
-$dbi->insert(table => 'table1', param => {key1 => 1, key2 => 2});
64
-$dbi->update(table => 'table1', param => {key2 => 4},
63
+$dbi->insert({key1 => 1, key2 => 2}, table => 'table1');
64
+$dbi->update({key2 => 4}, table => 'table1',
65 65
   where => {key1 => 1}, prefix => 'or replace');
66 66
 $result = $dbi->execute('select * from table1;');
67 67
 $rows   = $result->all;
... ...
@@ -74,7 +74,7 @@ $dbi->quote('"');
74 74
 eval { $dbi->execute("drop table ${q}table$p") };
75 75
 $dbi->execute($create_table_reserved);
76 76
 $dbi->apply_filter('table', select => {out => sub { $_[0] * 2}});
77
-$dbi->insert(table => 'table', param => {select => 1});
77
+$dbi->insert({select => 1}, table => 'table');
78 78
 $dbi->delete(table => 'table', where => {select => 1});
79 79
 $result = $dbi->execute("select * from ${q}table$p");
80 80
 $rows   = $result->all;
... ...
@@ -154,7 +154,7 @@ $dbi = DBIx::Custom->connect(
154 154
 $binary = pack("I3", 1, 2, 3);
155 155
 eval { $dbi->execute('drop table table1') };
156 156
 $dbi->execute('create table table1(key1, key2)');
157
-$dbi->insert(table => 'table1', param => {key1 => $binary, key2 => 'あ'}, type => [key1 => DBI::SQL_BLOB]);
157
+$dbi->insert({key1 => $binary, key2 => 'あ'}, table => 'table1', type => [key1 => DBI::SQL_BLOB]);
158 158
 $result = $dbi->select(table => 'table1');
159 159
 $row   = $result->one;
160 160
 is_deeply($row, {key1 => $binary, key2 => 'あ'}, "basic");
... ...
@@ -180,8 +180,8 @@ is($result->one->{key1}, 'A');
180 180
 test 'select limit';
181 181
 eval { $dbi->execute('drop table table1') };
182 182
 $dbi->execute($create_table1);
183
-$dbi->insert(table => 'table1', param => {key1 => 1, key2 => 2});
184
-$dbi->insert(table => 'table1', param => {key1 => 3, key2 => 4});
183
+$dbi->insert({key1 => 1, key2 => 2}, table => 'table1');
184
+$dbi->insert({key1 => 3, key2 => 4}, table => 'table1');
185 185
 $rows = $dbi->select(table => 'table1', append => "order by key1 desc limit 1")->all;
186 186
 is_deeply($rows, [{key1 => 3, key2 => 4}], "append statement");
187 187
 
... ...
@@ -198,8 +198,8 @@ $dbi->apply_filter('table3',
198 198
   name => {in => sub { uc $_[0] } }
199 199
 );
200 200
 
201
-$dbi->insert(table => 'table2', param => {id => 1, name => 'a', table3_id => 2});
202
-$dbi->insert(table => 'table3', param => {id => 2, name => 'b'});
201
+$dbi->insert({id => 1, name => 'a', table3_id => 2}, table => 'table2');
202
+$dbi->insert({id => 2, name => 'b'}, table => 'table3');
203 203
 
204 204
 $result = $dbi->select(
205 205
     table => ['table2', 'table3'], relation => {'table2.table3_id' => 'table3.id'},
... ...
@@ -226,8 +226,8 @@ $dbi->reserved_word_quote('"');
226 226
 $dbi->execute($create_table_reserved);
227 227
 $dbi->apply_filter('table', select => {out => sub { $_[0] * 2}});
228 228
 $dbi->apply_filter('table', update => {out => sub { $_[0] * 3}});
229
-$dbi->insert(table => 'table', param => {select => 1});
230
-$dbi->update(table => 'table', where => {'table.select' => 1}, param => {update => 2});
229
+$dbi->insert({select => 1}, table => 'table');
230
+$dbi->update({update => 2}, table => 'table', where => {'table.select' => 1});
231 231
 $result = $dbi->execute("select * from ${q}table$p");
232 232
 $rows   = $result->all;
233 233
 is_deeply($rows, [{select => 2, update => 6}], "reserved word");
... ...
@@ -236,9 +236,9 @@ test 'limit tag';
236 236
 $dbi = DBIx::Custom->connect;
237 237
 eval { $dbi->execute('drop table table1') };
238 238
 $dbi->execute($create_table1);
239
-$dbi->insert(table => 'table1', param => {key1 => 1, key2 => 2});
240
-$dbi->insert(table => 'table1', param => {key1 => 1, key2 => 4});
241
-$dbi->insert(table => 'table1', param => {key1 => 1, key2 => 6});
239
+$dbi->insert({key1 => 1, key2 => 2}, table => 'table1');
240
+$dbi->insert({key1 => 1, key2 => 4}, table => 'table1');
241
+$dbi->insert({key1 => 1, key2 => 6}, table => 'table1');
242 242
 $dbi->register_tag(
243 243
     limit => sub {
244 244
         my ($count, $offset) = @_;
... ...
@@ -275,9 +275,9 @@ eval { $dbi->execute("drop table table1") };
275 275
 eval { $dbi->execute("drop table table2") };
276 276
 $dbi->execute($create_table1);
277 277
 $dbi->execute("create table table2 (key1, key3)");
278
-$dbi->insert(table => 'table1', param => {key1 => 1, key2 => 2});
279
-$dbi->insert(table => 'table2', param => {key1 => 1, key3 => 4});
280
-$dbi->insert(table => 'table2', param => {key1 => 1, key3 => 1});
278
+$dbi->insert({key1 => 1, key2 => 2}, table => 'table1');
279
+$dbi->insert({key1 => 1, key3 => 4}, table => 'table2');
280
+$dbi->insert({key1 => 1, key3 => 1}, table => 'table2');
281 281
 $result = $dbi->select(
282 282
     table => 'table1',
283 283
     column => [{table2 => ['key3']}],
... ...
@@ -292,9 +292,9 @@ eval { $dbi->execute("drop table table1") };
292 292
 eval { $dbi->execute("drop table table2") };
293 293
 $dbi->execute($create_table1);
294 294
 $dbi->execute("create table table2 (key1, key3)");
295
-$dbi->insert(table => 'table1', param => {key1 => 1, key2 => 2});
296
-$dbi->insert(table => 'table2', param => {key1 => 1, key3 => 4});
297
-$dbi->insert(table => 'table2', param => {key1 => 1, key3 => 1});
295
+$dbi->insert({key1 => 1, key2 => 2}, table => 'table1');
296
+$dbi->insert({key1 => 1, key3 => 4}, table => 'table2');
297
+$dbi->insert({key1 => 1, key3 => 1}, table => 'table2');
298 298
 $result = $dbi->select(
299 299
     table => 'table1',
300 300
     column => [{table2 => ['key3']}],