| ... | ... |
@@ -10,7 +10,6 @@ use DBI; |
| 10 | 10 |
use DBIx::Custom::Result; |
| 11 | 11 |
use DBIx::Custom::SQLTemplate; |
| 12 | 12 |
use DBIx::Custom::Query; |
| 13 |
-use DBIx::Custom::KeyInfo; |
|
| 14 | 13 |
|
| 15 | 14 |
__PACKAGE__->attr('dbh');
|
| 16 | 15 |
|
| ... | ... |
@@ -213,9 +212,6 @@ sub query{
|
| 213 | 212 |
my ($self, $query, $params, $args) = @_; |
| 214 | 213 |
$params ||= {};
|
| 215 | 214 |
|
| 216 |
- # Filter |
|
| 217 |
- my $filter = $args->{filter} || {};
|
|
| 218 |
- |
|
| 219 | 215 |
# First argument is SQL template |
| 220 | 216 |
unless (ref $query eq 'DBIx::Custom::Query') {
|
| 221 | 217 |
my $template; |
| ... | ... |
@@ -228,6 +224,9 @@ sub query{
|
| 228 | 224 |
$query = $self->create_query($template); |
| 229 | 225 |
} |
| 230 | 226 |
|
| 227 |
+ # Filter |
|
| 228 |
+ my $filter = $args->{filter} || $query->filter || {};
|
|
| 229 |
+ |
|
| 231 | 230 |
# Create bind value |
| 232 | 231 |
my $bind_values = $self->_build_bind_values($query, $params, $filter); |
| 233 | 232 |
|
| ... | ... |
@@ -267,8 +266,9 @@ sub query{
|
| 267 | 266 |
sub _build_bind_values {
|
| 268 | 267 |
my ($self, $query, $params, $filter) = @_; |
| 269 | 268 |
my $key_infos = $query->key_infos; |
| 270 |
- my $default_filter = $self->default_query_filter; |
|
| 269 |
+ my $default_filter = $self->default_query_filter || ''; |
|
| 271 | 270 |
my $filters = $self->filters; |
| 271 |
+ $filter ||= {};
|
|
| 272 | 272 |
|
| 273 | 273 |
# binding values |
| 274 | 274 |
my @bind_values; |
| ... | ... |
@@ -282,11 +282,11 @@ sub _build_bind_values {
|
| 282 | 282 |
my $value = defined $pos ? $params->{$column}->[$pos] : $params->{$column};
|
| 283 | 283 |
|
| 284 | 284 |
# Filter |
| 285 |
- $filter = $filters->{$filter} || $filters->{$default_filter};
|
|
| 285 |
+ my $fname = $filter->{$column} || $default_filter || '';
|
|
| 286 | 286 |
|
| 287 |
- push @bind_values, |
|
| 288 |
- $filter ? $filter->($value) |
|
| 289 |
- : $value; |
|
| 287 |
+ push @bind_values, $filters->{$fname}
|
|
| 288 |
+ ? $filters->{$fname}->($value)
|
|
| 289 |
+ : $value; |
|
| 290 | 290 |
} |
| 291 | 291 |
|
| 292 | 292 |
return \@bind_values; |
| ... | ... |
@@ -453,16 +453,15 @@ sub update {
|
| 453 | 453 |
|
| 454 | 454 |
# Where clause |
| 455 | 455 |
my $where_clause = ''; |
| 456 |
+ my $new_where_params = {};
|
|
| 457 |
+ |
|
| 456 | 458 |
if (@where_keys) {
|
| 457 | 459 |
$where_clause = 'where '; |
| 458 | 460 |
foreach my $where_key (@where_keys) {
|
| 459 |
- my $key_info = DBIx::Custom::KeyInfo->new($where_key); |
|
| 460 |
- |
|
| 461 |
- my $table_new = $key_info->table || $table; |
|
| 462 |
- my $column = $table_new . '.' . $key_info->column |
|
| 463 |
- . '#@where'; |
|
| 461 |
+ $new_where_params->{"$where_key@where"}
|
|
| 462 |
+ = $where_params->{$where_key};
|
|
| 464 | 463 |
|
| 465 |
- $where_clause .= "{= $column} and ";
|
|
| 464 |
+ $where_clause .= "{= $where_key@where} and ";
|
|
| 466 | 465 |
} |
| 467 | 466 |
$where_clause =~ s/ and $//; |
| 468 | 467 |
} |
| ... | ... |
@@ -472,7 +471,7 @@ sub update {
|
| 472 | 471 |
$template .= " $append_statement" if $append_statement; |
| 473 | 472 |
|
| 474 | 473 |
# Rearrange parammeters |
| 475 |
- my $params = {%$update_params, '@where' => $where_params};
|
|
| 474 |
+ my $params = {%$update_params, %$new_where_params};
|
|
| 476 | 475 |
|
| 477 | 476 |
# Execute query |
| 478 | 477 |
my $ret_val = $self->query($template, $params, {filter => $filter});
|
| ... | ... |
@@ -14,7 +14,7 @@ sub fetch {
|
| 14 | 14 |
|
| 15 | 15 |
my $sth = $self->sth; |
| 16 | 16 |
my $filters = $self->filters || {};
|
| 17 |
- my $default_filter = $self->default_filter; |
|
| 17 |
+ my $default_filter = $self->default_filter || ''; |
|
| 18 | 18 |
my $filter = $self->filter || {};
|
| 19 | 19 |
|
| 20 | 20 |
# Fetch |
| ... | ... |
@@ -28,7 +28,7 @@ sub fetch {
|
| 28 | 28 |
|
| 29 | 29 |
# Filter |
| 30 | 30 |
for (my $i = 0; $i < @$columns; $i++) {
|
| 31 |
- my $fname = $filter->{$columns->[$i]} || $filters->{$default_filter};
|
|
| 31 |
+ my $fname = $filter->{$columns->[$i]} || $filters->{$default_filter} || '';
|
|
| 32 | 32 |
my $filter = $filters->{$fname};
|
| 33 | 33 |
$row->[$i] = $filter->($row->[$i]) if $filter; |
| 34 | 34 |
} |
| ... | ... |
@@ -41,7 +41,7 @@ sub fetch_hash {
|
| 41 | 41 |
|
| 42 | 42 |
my $sth = $self->sth; |
| 43 | 43 |
my $filters = $self->filters || {};
|
| 44 |
- my $default_filter = $self->default_filter; |
|
| 44 |
+ my $default_filter = $self->default_filter || ''; |
|
| 45 | 45 |
my $filter = $self->filter || {};
|
| 46 | 46 |
|
| 47 | 47 |
# Fetch |
| ... | ... |
@@ -56,11 +56,11 @@ sub fetch_hash {
|
| 56 | 56 |
# Filter |
| 57 | 57 |
my $row_hash = {};
|
| 58 | 58 |
for (my $i = 0; $i < @$columns; $i++) {
|
| 59 |
- my $fname = $filter->{$columns->[$i]} || $filters->{$default_filter};
|
|
| 59 |
+ my $fname = $filter->{$columns->[$i]} || $filters->{$default_filter} || '';
|
|
| 60 | 60 |
my $filter = $filters->{$fname};
|
| 61 | 61 |
$row_hash->{$columns->[$i]} = $filter
|
| 62 |
- ? $filter->($columns->[$i]) |
|
| 63 |
- : $columns->[$i]; |
|
| 62 |
+ ? $filter->($row->[$i]) |
|
| 63 |
+ : $row->[$i]; |
|
| 64 | 64 |
} |
| 65 | 65 |
|
| 66 | 66 |
return wantarray ? %$row_hash : $row_hash; |
| ... | ... |
@@ -204,7 +204,7 @@ Statement handle |
| 204 | 204 |
|
| 205 | 205 |
Filter excuted when data is fetched |
| 206 | 206 |
|
| 207 |
- $result = $result->default_filter($sth); |
|
| 207 |
+ $result = $result->default_filter($default_filter); |
|
| 208 | 208 |
$default_filter = $result->default_filter; |
| 209 | 209 |
|
| 210 | 210 |
=head2 filter |
| ... | ... |
@@ -233,7 +233,10 @@ sub expand_basic_tag {
|
| 233 | 233 |
# Key is not exist |
| 234 | 234 |
croak("You must be pass key as argument to tag '{$tag_name }'")
|
| 235 | 235 |
unless $column; |
| 236 |
- |
|
| 236 |
+ |
|
| 237 |
+ # delete ID |
|
| 238 |
+ |
|
| 239 |
+ |
|
| 237 | 240 |
# Expanded tag |
| 238 | 241 |
my $expand = $tag_name eq '?' |
| 239 | 242 |
? '?' |
| ... | ... |
@@ -177,88 +177,37 @@ test 'Direct query'; |
| 177 | 177 |
$dbi->do($DROP_TABLE->{0});
|
| 178 | 178 |
$dbi->do($CREATE_TABLE->{0});
|
| 179 | 179 |
$insert_tmpl = "insert into table1 {insert key1 key2}";
|
| 180 |
-$dbi->query($insert_tmpl, {key1 => 1, key2 => 2}, sub {
|
|
| 181 |
- my $query = shift; |
|
| 182 |
- $query->query_filter(sub {
|
|
| 183 |
- my ($value, $table, $column, $dbi) = @_; |
|
| 184 |
- if ($column eq 'key2' && $dbi->isa('DBIx::Custom')) {
|
|
| 185 |
- return $value + 1; |
|
| 186 |
- } |
|
| 187 |
- return $value; |
|
| 188 |
- }); |
|
| 189 |
-}); |
|
| 190 |
-$result = $dbi->query(['table1', $SELECT_TMPLS->{0}]);
|
|
| 180 |
+$dbi->query($insert_tmpl, {key1 => 1, key2 => 2});
|
|
| 181 |
+$result = $dbi->query($SELECT_TMPLS->{0});
|
|
| 191 | 182 |
$rows = $result->fetch_hash_all; |
| 192 |
-is_deeply($rows, [{key1 => 1, key2 => 3}], $test);
|
|
| 183 |
+is_deeply($rows, [{key1 => 1, key2 => 2}], $test);
|
|
| 193 | 184 |
|
| 194 | 185 |
test 'Filter basic'; |
| 195 | 186 |
$dbi->do($DROP_TABLE->{0});
|
| 196 | 187 |
$dbi->do($CREATE_TABLE->{0});
|
| 188 |
+$dbi->resist_filter(twice => sub { $_[0] * 2},
|
|
| 189 |
+ three_times => sub { $_[0] * 3});
|
|
| 197 | 190 |
|
| 198 | 191 |
$insert_tmpl = "insert into table1 {insert key1 key2};";
|
| 199 | 192 |
$insert_query = $dbi->create_query($insert_tmpl); |
| 200 |
-$insert_query->query_filter(sub {
|
|
| 201 |
- my ($value, $table, $column, $dbi) = @_; |
|
| 202 |
- |
|
| 203 |
- if ($table eq '' && $column eq 'key1') |
|
| 204 |
- {
|
|
| 205 |
- return $value * 2; |
|
| 206 |
- } |
|
| 207 |
- return $value; |
|
| 208 |
-}); |
|
| 193 |
+$insert_query->filter({key1 => 'twice'});
|
|
| 209 | 194 |
$dbi->query($insert_query, {key1 => 1, key2 => 2});
|
| 210 |
-$select_query = $dbi->create_query($SELECT_TMPLS->{0});
|
|
| 211 |
-$select_query->fetch_filter(sub {
|
|
| 212 |
- my ($value, $key, $dbi, $infos) = @_; |
|
| 213 |
- my ($type, $sth, $i) = @{$infos}{qw/type sth index/};
|
|
| 214 |
- |
|
| 215 |
- if ($key eq 'key2' && $type =~ /char/ && ref $sth eq 'DBI::st' |
|
| 216 |
- && $i == 1 && $dbi->isa('DBIx::Custom'))
|
|
| 217 |
- {
|
|
| 218 |
- return $value * 3; |
|
| 219 |
- } |
|
| 220 |
- return $value; |
|
| 221 |
-}); |
|
| 222 |
-$result = $dbi->query($select_query); |
|
| 223 |
-$rows = $result->fetch_hash_all; |
|
| 224 |
-is_deeply($rows, [{key1 => 2, key2 => 6}], "$test : query_filter fetch_filter");
|
|
| 225 |
- |
|
| 195 |
+$result = $dbi->query($SELECT_TMPLS->{0});
|
|
| 196 |
+$rows = $result->filter({key2 => 'three_times'})->fetch_hash_all;
|
|
| 197 |
+is_deeply($rows, [{key1 => 2, key2 => 6}], "$test : filter fetch_filter");
|
|
| 226 | 198 |
$dbi->do($DROP_TABLE->{0});
|
| 227 |
-$dbi->do($CREATE_TABLE->{0});
|
|
| 228 |
-$insert_tmpl = "insert into table1 {insert table1.key1 table1.key2}";
|
|
| 229 |
-$insert_query = $dbi->create_query($insert_tmpl); |
|
| 230 |
-$insert_query->query_filter(sub {
|
|
| 231 |
- my ($value, $table, $column, $dbi) = @_; |
|
| 232 |
- |
|
| 233 |
- if ($table eq 'table1' && $column eq 'key1') {
|
|
| 234 |
- return $value * 3; |
|
| 235 |
- } |
|
| 236 |
- return $value; |
|
| 237 |
-}); |
|
| 238 |
-$dbi->query($insert_query, {key1 => 1, key2 => 2});
|
|
| 239 |
-$select_query = $dbi->create_query($SELECT_TMPLS->{0});
|
|
| 240 |
-$result = $dbi->query($select_query); |
|
| 241 |
-$rows = $result->fetch_hash_all; |
|
| 242 |
-is_deeply($rows, [{key1 => 3, key2 => 2}], "$test : insert with id");
|
|
| 243 | 199 |
|
| 244 | 200 |
test 'Filter in'; |
| 201 |
+$dbi->do($CREATE_TABLE->{0});
|
|
| 245 | 202 |
$insert_tmpl = "insert into table1 {insert key1 key2};";
|
| 246 | 203 |
$insert_query = $dbi->create_query($insert_tmpl); |
| 247 | 204 |
$dbi->query($insert_query, {key1 => 2, key2 => 4});
|
| 248 | 205 |
$select_tmpl = "select * from table1 where {in table1.key1 2} and {in table1.key2 2}";
|
| 249 | 206 |
$select_query = $dbi->create_query($select_tmpl); |
| 250 |
-$select_query->query_filter(sub {
|
|
| 251 |
- my ($value, $table, $column, $dbi) = @_; |
|
| 252 |
- |
|
| 253 |
- if ($table eq 'table1' && $column eq 'key1') {
|
|
| 254 |
- return $value * 2; |
|
| 255 |
- } |
|
| 256 |
- return $value; |
|
| 257 |
-}); |
|
| 258 |
-$result = $dbi->query($select_query, {key1 => [1,5], key2 => [2,4]});
|
|
| 207 |
+$select_query->filter({'table1.key1' => 'twice'});
|
|
| 208 |
+$result = $dbi->query($select_query, {'table1.key1' => [1,5], 'table1.key2' => [2,4]});
|
|
| 259 | 209 |
$rows = $result->fetch_hash_all; |
| 260 |
-is_deeply($rows, [{key1 => 2, key2 => 4}], "$test : query_filter");
|
|
| 261 |
- |
|
| 210 |
+is_deeply($rows, [{key1 => 2, key2 => 4}], "$test : filter");
|
|
| 262 | 211 |
|
| 263 | 212 |
test 'DBIx::Custom::SQLTemplate basic tag'; |
| 264 | 213 |
$dbi->do($DROP_TABLE->{0});
|
| ... | ... |
@@ -273,37 +222,12 @@ $result = $dbi->query($query, {key1 => 1, key2 => 3, key3 => 4, key4 => 3, key5
|
| 273 | 222 |
$rows = $result->fetch_hash_all; |
| 274 | 223 |
is_deeply($rows, [{key1 => 1, key2 => 2, key3 => 3, key4 => 4, key5 => 5}], "$test : basic tag1");
|
| 275 | 224 |
|
| 276 |
-$tmpl = "select * from table1 where {= table1.key1#id} and {<> table1.key2#id} and {< table1.key3#id} and {> table1.key4#id} and {>= table1.key5#id};";
|
|
| 277 |
-$query = $dbi->create_query($tmpl); |
|
| 278 |
-$result = $dbi->query($query, {id => {key1 => 1, key2 => 3, key3 => 4, key4 => 3, key5 => 5}});
|
|
| 279 |
-$rows = $result->fetch_hash_all; |
|
| 280 |
-is_deeply($rows, [{key1 => 1, key2 => 2, key3 => 3, key4 => 4, key5 => 5}], "$test : basic tag1 with id");
|
|
| 281 |
- |
|
| 282 |
-$tmpl = "select * from table1 where {= table1.key1} and {<> table1.key2} and {< table1.key3} and {> table1.key4} and {>= table1.key5};";
|
|
| 283 |
-$query = $dbi->create_query($tmpl); |
|
| 284 |
-$result = $dbi->query($query, {key1 => 1, key2 => 3, key3 => 4, key4 => 3, key5 => 5});
|
|
| 285 |
-$rows = $result->fetch_hash_all; |
|
| 286 |
-is_deeply($rows, [{key1 => 1, key2 => 2, key3 => 3, key4 => 4, key5 => 5}], "$test : basic tag1 with table dot");
|
|
| 287 |
- |
|
| 288 | 225 |
$tmpl = "select * from table1 where {<= key1} and {like key2};";
|
| 289 | 226 |
$query = $dbi->create_query($tmpl); |
| 290 | 227 |
$result = $dbi->query($query, {key1 => 1, key2 => '%2%'});
|
| 291 | 228 |
$rows = $result->fetch_hash_all; |
| 292 | 229 |
is_deeply($rows, [{key1 => 1, key2 => 2, key3 => 3, key4 => 4, key5 => 5}], "$test : basic tag2");
|
| 293 | 230 |
|
| 294 |
-$tmpl = "select * from table1 where {<= table1.key1#id} and {like table1.key2#id};";
|
|
| 295 |
-$query = $dbi->create_query($tmpl); |
|
| 296 |
-$result = $dbi->query($query, {id => {key1 => 1, key2 => '%2%'}});
|
|
| 297 |
-$rows = $result->fetch_hash_all; |
|
| 298 |
-is_deeply($rows, [{key1 => 1, key2 => 2, key3 => 3, key4 => 4, key5 => 5}], "$test : basic tag2 with table");
|
|
| 299 |
- |
|
| 300 |
-$tmpl = "select * from table1 where {<= table1.key1} and {like table1.key2};";
|
|
| 301 |
-$query = $dbi->create_query($tmpl); |
|
| 302 |
-$result = $dbi->query($query, {'key1' => 1, 'key2' => '%2%'});
|
|
| 303 |
-$rows = $result->fetch_hash_all; |
|
| 304 |
-is_deeply($rows, [{key1 => 1, key2 => 2, key3 => 3, key4 => 4, key5 => 5}], "$test : basic tag2 with table dot");
|
|
| 305 |
- |
|
| 306 |
- |
|
| 307 | 231 |
test 'DIB::Custom::SQLTemplate in tag'; |
| 308 | 232 |
$dbi->do($DROP_TABLE->{0});
|
| 309 | 233 |
$dbi->do($CREATE_TABLE->{1});
|
| ... | ... |
@@ -317,19 +241,6 @@ $result = $dbi->query($query, {key1 => [9, 1]});
|
| 317 | 241 |
$rows = $result->fetch_hash_all; |
| 318 | 242 |
is_deeply($rows, [{key1 => 1, key2 => 2, key3 => 3, key4 => 4, key5 => 5}], "$test : basic");
|
| 319 | 243 |
|
| 320 |
-$tmpl = "select * from table1 where {in table1.key1#id 2};";
|
|
| 321 |
-$query = $dbi->create_query($tmpl); |
|
| 322 |
-$result = $dbi->query($query, {id => {key1 => [9, 1]}});
|
|
| 323 |
-$rows = $result->fetch_hash_all; |
|
| 324 |
-is_deeply($rows, [{key1 => 1, key2 => 2, key3 => 3, key4 => 4, key5 => 5}], "$test : with table");
|
|
| 325 |
- |
|
| 326 |
-$tmpl = "select * from table1 where {in table1.key1#id 2};";
|
|
| 327 |
-$query = $dbi->create_query($tmpl); |
|
| 328 |
-$result = $dbi->query($query, {id => {'key1' => [9, 1]}});
|
|
| 329 |
-$rows = $result->fetch_hash_all; |
|
| 330 |
-is_deeply($rows, [{key1 => 1, key2 => 2, key3 => 3, key4 => 4, key5 => 5}], "$test : with table dot");
|
|
| 331 |
- |
|
| 332 |
- |
|
| 333 | 244 |
test 'DBIx::Custom::SQLTemplate insert tag'; |
| 334 | 245 |
$dbi->do("delete from table1");
|
| 335 | 246 |
$insert_tmpl = 'insert into table1 {insert key1 key2 key3 key4 key5}';
|
| ... | ... |
@@ -339,13 +250,6 @@ $result = $dbi->query($SELECT_TMPLS->{0});
|
| 339 | 250 |
$rows = $result->fetch_hash_all; |
| 340 | 251 |
is_deeply($rows, [{key1 => 1, key2 => 2, key3 => 3, key4 => 4, key5 => 5}], "$test : basic");
|
| 341 | 252 |
|
| 342 |
-$dbi->do("delete from table1");
|
|
| 343 |
-$insert_tmpl = 'insert into table1 {insert table1.key1#id table1.key2#id table1.key3#id table1.key4#id table1.key5#id}';
|
|
| 344 |
-$dbi->query($insert_tmpl, {id => {key1 => 1, key2 => 2, key3 => 3, key4 => 4, key5 => 5}});
|
|
| 345 |
-$result = $dbi->query($SELECT_TMPLS->{0});
|
|
| 346 |
-$rows = $result->fetch_hash_all; |
|
| 347 |
-is_deeply($rows, [{key1 => 1, key2 => 2, key3 => 3, key4 => 4, key5 => 5}], "$test : with table name");
|
|
| 348 |
- |
|
| 349 | 253 |
test 'DBIx::Custom::SQLTemplate update tag'; |
| 350 | 254 |
$dbi->do("delete from table1");
|
| 351 | 255 |
$insert_tmpl = "insert into table1 {insert key1 key2 key3 key4 key5}";
|
| ... | ... |
@@ -360,13 +264,6 @@ $rows = $result->fetch_hash_all; |
| 360 | 264 |
is_deeply($rows, [{key1 => 1, key2 => 1, key3 => 1, key4 => 1, key5 => 5},
|
| 361 | 265 |
{key1 => 6, key2 => 7, key3 => 8, key4 => 9, key5 => 10}], "$test : basic");
|
| 362 | 266 |
|
| 363 |
-$update_tmpl = 'update table1 {update table1.key1#id table1.key2#id table1.key3#id table1.key4#id} where {= table1.key5#id}';
|
|
| 364 |
-$dbi->query($update_tmpl, {id => {key1 => 3, key2 => 3, key3 => 3, key4 => 3, key5 => 5}});
|
|
| 365 |
-$result = $dbi->query($SELECT_TMPLS->{0});
|
|
| 366 |
-$rows = $result->fetch_hash_all; |
|
| 367 |
-is_deeply($rows, [{key1 => 3, key2 => 3, key3 => 3, key4 => 3, key5 => 5},
|
|
| 368 |
- {key1 => 6, key2 => 7, key3 => 8, key4 => 9, key5 => 10}], "$test : with table name");
|
|
| 369 |
- |
|
| 370 | 267 |
test 'transaction'; |
| 371 | 268 |
$dbi->do($DROP_TABLE->{0});
|
| 372 | 269 |
$dbi->do($CREATE_TABLE->{0});
|
| ... | ... |
@@ -438,38 +335,23 @@ $rows = $result->fetch_hash_all; |
| 438 | 335 |
is_deeply($rows, [{key1 => 1, key2 => 2}, {key1 => 3, key2 => 4}], "$test : basic");
|
| 439 | 336 |
|
| 440 | 337 |
$dbi->do('delete from table1');
|
| 441 |
-$dbi->insert('table1', {key1 => 1, key2 => 2},
|
|
| 442 |
- {
|
|
| 443 |
- query_edit_cb => sub {
|
|
| 444 |
- my $query = shift; |
|
| 445 |
- $query->query_filter(sub {
|
|
| 446 |
- my ($value, $table, $column, $dbi) = @_; |
|
| 447 |
- if ($column eq 'key1') {
|
|
| 448 |
- return $value * 3; |
|
| 449 |
- } |
|
| 450 |
- return $value; |
|
| 451 |
- }); |
|
| 452 |
- } |
|
| 453 |
- } |
|
| 454 |
-); |
|
| 338 |
+$dbi->resist_filter(three_times => sub { $_[0] * 3});
|
|
| 339 |
+$dbi->insert('table1', {key1 => 1, key2 => 2}, {filter => {key1 => 'three_times'}});
|
|
| 455 | 340 |
$result = $dbi->query($SELECT_TMPLS->{0});
|
| 456 | 341 |
$rows = $result->fetch_hash_all; |
| 457 | 342 |
is_deeply($rows, [{key1 => 3, key2 => 2}], "$test : edit_query_callback");
|
| 458 | 343 |
|
| 459 |
-$dbi->insert('table1', {key1 => 1, key2 => 2}, {append => ' ', query_edit_cb => sub {
|
|
| 460 |
- my $query = shift; |
|
| 461 |
- like($query->sql, qr/insert into table1 \(.+\) values \(\?, \?\) ;/, |
|
| 462 |
- "$test: append statement"); |
|
| 463 |
-}}); |
|
| 344 |
+$dbi->do($DROP_TABLE->{0});
|
|
| 345 |
+$dbi->do($CREATE_TABLE->{0});
|
|
| 346 |
+$dbi->insert('table1', {key1 => 1, key2 => 2}, {append => ' '});
|
|
| 347 |
+$rows = $dbi->select('table1')->fetch_hash_all;
|
|
| 348 |
+is_deeply($rows, [{key1 => 1, key2 => 2}], 'insert append');
|
|
| 349 |
+ |
|
| 464 | 350 |
|
| 465 | 351 |
test 'insert error'; |
| 466 | 352 |
eval{$dbi->insert('table1')};
|
| 467 | 353 |
like($@, qr/Key-value pairs for insert must be specified to 'insert' second argument/, "$test : insert key-value not specifed"); |
| 468 | 354 |
|
| 469 |
-eval{$dbi->insert('table1', {key1 => 1, key2 => 2}, {append => '', query_edit_cb => 'aaa'})};
|
|
| 470 |
-like($@, qr/Query edit callback must be code reference/, "$test : query edit callback not code ref"); |
|
| 471 |
- |
|
| 472 |
- |
|
| 473 | 355 |
test 'update'; |
| 474 | 356 |
$dbi = DBIx::Custom->new($NEW_ARGS->{0});
|
| 475 | 357 |
$dbi->do($CREATE_TABLE->{1});
|
| ... | ... |
@@ -497,7 +379,7 @@ $dbi->insert('table1', {key1 => 1, key2 => 2, key3 => 3, key4 => 4, key5 => 5});
|
| 497 | 379 |
$dbi->insert('table1', {key1 => 6, key2 => 7, key3 => 8, key4 => 9, key5 => 10});
|
| 498 | 380 |
$dbi->update('table1', {key2 => 11}, {where => {key1 => 1}, query_edit_cb => sub {
|
| 499 | 381 |
my $query = shift; |
| 500 |
- $query->query_filter(sub {
|
|
| 382 |
+ $query->filter(sub {
|
|
| 501 | 383 |
my ($value, $table, $column, $dbi) = @_; |
| 502 | 384 |
if ($column eq 'key2') {
|
| 503 | 385 |
return $value * 2; |
| ... | ... |
@@ -541,7 +423,7 @@ $dbi->insert('table1', {key1 => 1, key2 => 2, key3 => 3, key4 => 4, key5 => 5});
|
| 541 | 423 |
$dbi->insert('table1', {key1 => 6, key2 => 7, key3 => 8, key4 => 9, key5 => 10});
|
| 542 | 424 |
$dbi->update_all('table1', {key2 => 10}, {query_edit_cb => sub {
|
| 543 | 425 |
my $query = shift; |
| 544 |
- $query->query_filter(sub {
|
|
| 426 |
+ $query->filter(sub {
|
|
| 545 | 427 |
my ($value, $table, $column, $dbi) = @_; |
| 546 | 428 |
return $value * 2; |
| 547 | 429 |
}) |
| ... | ... |
@@ -568,7 +450,7 @@ $dbi->insert('table1', {key1 => 1, key2 => 2});
|
| 568 | 450 |
$dbi->insert('table1', {key1 => 3, key2 => 4});
|
| 569 | 451 |
$dbi->delete('table1', {where => {key2 => 1}, query_edit_cb => sub {
|
| 570 | 452 |
my $query = shift; |
| 571 |
- $query->query_filter(sub {
|
|
| 453 |
+ $query->filter(sub {
|
|
| 572 | 454 |
my ($value, $table, $column, $dbi) = @_; |
| 573 | 455 |
return $value * 2; |
| 574 | 456 |
}); |
| ... | ... |
@@ -638,7 +520,7 @@ is_deeply($rows, [{key1 => 3, key2 => 4}], "$test : append statement");
|
| 638 | 520 |
|
| 639 | 521 |
$rows = $dbi->select('table1', {where => {key1 => 2}, query_edit_cb =>sub {
|
| 640 | 522 |
my $query = shift; |
| 641 |
- $query->query_filter(sub {
|
|
| 523 |
+ $query->filter(sub {
|
|
| 642 | 524 |
my ($value, $table, $column, $dbi) = @_; |
| 643 | 525 |
if ($column eq 'key1') {
|
| 644 | 526 |
return $value - 1; |
| ... | ... |
@@ -697,11 +579,11 @@ is_deeply(DBIx::Custom->_query_caches->{$tmpls[2]}{key_infos}, $queries[2]->key_
|
| 697 | 579 |
is_deeply(DBIx::Custom->_query_cache_keys, [@tmpls[1, 2]], "$test : cache key third"); |
| 698 | 580 |
|
| 699 | 581 |
$query = $dbi->create_query($tmpls[0]); |
| 700 |
-$query->query_filter('aaa');
|
|
| 582 |
+$query->filter('aaa');
|
|
| 701 | 583 |
$query = $dbi->create_query($tmpls[0]); |
| 702 |
-ok(!$query->query_filter, "$test : only cached sql and key_infos"); |
|
| 703 |
-$query->query_filter('bbb');
|
|
| 584 |
+ok(!$query->filter, "$test : only cached sql and key_infos"); |
|
| 585 |
+$query->filter('bbb');
|
|
| 704 | 586 |
$query = $dbi->create_query($tmpls[0]); |
| 705 |
-ok(!$query->query_filter, "$test : only cached sql and key_infos"); |
|
| 587 |
+ok(!$query->filter, "$test : only cached sql and key_infos"); |
|
| 706 | 588 |
|
| 707 | 589 |
|