| ... | ... |
@@ -2535,33 +2535,140 @@ $result = $model->select( |
| 2535 | 2535 |
is_deeply($result->one, |
| 2536 | 2536 |
{'table2.key1' => 1, 'table2.key3' => 3});
|
| 2537 | 2537 |
|
| 2538 |
+test 'separator'; |
|
| 2539 |
+$dbi = DBIx::Custom->connect; |
|
| 2540 |
+eval { $dbi->execute('drop table table1') };
|
|
| 2541 |
+eval { $dbi->execute('drop table table2') };
|
|
| 2542 |
+$dbi->execute($create_table1); |
|
| 2543 |
+$dbi->execute($create_table2); |
|
| 2538 | 2544 |
|
| 2545 |
+$dbi->create_model( |
|
| 2546 |
+ table => 'table1', |
|
| 2547 |
+ join => [ |
|
| 2548 |
+ 'left outer join table2 on table1.key1 = table2.key1' |
|
| 2549 |
+ ], |
|
| 2550 |
+ primary_key => ['key1'], |
|
| 2551 |
+); |
|
| 2552 |
+$model2 = $dbi->create_model( |
|
| 2553 |
+ table => 'table2', |
|
| 2554 |
+); |
|
| 2555 |
+$dbi->setup_model; |
|
| 2556 |
+$dbi->insert(table => 'table1', param => {key1 => 1, key2 => 2});
|
|
| 2557 |
+$dbi->insert(table => 'table2', param => {key1 => 1, key3 => 3});
|
|
| 2558 |
+$model = $dbi->model('table1');
|
|
| 2559 |
+$result = $model->select( |
|
| 2560 |
+ column => [ |
|
| 2561 |
+ $model->mycolumn, |
|
| 2562 |
+ {table2 => [qw/key1 key3/]}
|
|
| 2563 |
+ ], |
|
| 2564 |
+ where => {'table1.key1' => 1}
|
|
| 2565 |
+); |
|
| 2566 |
+is_deeply($result->one, |
|
| 2567 |
+ {key1 => 1, key2 => 2, 'table2.key1' => 1, 'table2.key3' => 3});
|
|
| 2568 |
+is_deeply($model2->select->one, {key1 => 1, key3 => 3});
|
|
| 2539 | 2569 |
|
| 2570 |
+$dbi->separator('__');
|
|
| 2571 |
+$model = $dbi->model('table1');
|
|
| 2572 |
+$result = $model->select( |
|
| 2573 |
+ column => [ |
|
| 2574 |
+ $model->mycolumn, |
|
| 2575 |
+ {table2 => [qw/key1 key3/]}
|
|
| 2576 |
+ ], |
|
| 2577 |
+ where => {'table1.key1' => 1}
|
|
| 2578 |
+); |
|
| 2579 |
+is_deeply($result->one, |
|
| 2580 |
+ {key1 => 1, key2 => 2, 'table2__key1' => 1, 'table2__key3' => 3});
|
|
| 2581 |
+is_deeply($model2->select->one, {key1 => 1, key3 => 3});
|
|
| 2540 | 2582 |
|
| 2583 |
+$dbi->separator('-');
|
|
| 2584 |
+$model = $dbi->model('table1');
|
|
| 2585 |
+$result = $model->select( |
|
| 2586 |
+ column => [ |
|
| 2587 |
+ $model->mycolumn, |
|
| 2588 |
+ {table2 => [qw/key1 key3/]}
|
|
| 2589 |
+ ], |
|
| 2590 |
+ where => {'table1.key1' => 1}
|
|
| 2591 |
+); |
|
| 2592 |
+is_deeply($result->one, |
|
| 2593 |
+ {key1 => 1, key2 => 2, 'table2-key1' => 1, 'table2-key3' => 3});
|
|
| 2594 |
+is_deeply($model2->select->one, {key1 => 1, key3 => 3});
|
|
| 2541 | 2595 |
|
| 2542 | 2596 |
|
| 2597 |
+test 'filter_off'; |
|
| 2598 |
+$dbi = DBIx::Custom->connect; |
|
| 2599 |
+eval { $dbi->execute('drop table table1') };
|
|
| 2600 |
+eval { $dbi->execute('drop table table2') };
|
|
| 2601 |
+$dbi->execute($create_table1); |
|
| 2602 |
+$dbi->execute($create_table2); |
|
| 2543 | 2603 |
|
| 2604 |
+$dbi->create_model( |
|
| 2605 |
+ table => 'table1', |
|
| 2606 |
+ join => [ |
|
| 2607 |
+ 'left outer join table2 on table1.key1 = table2.key1' |
|
| 2608 |
+ ], |
|
| 2609 |
+ primary_key => ['key1'], |
|
| 2610 |
+); |
|
| 2611 |
+$dbi->setup_model; |
|
| 2612 |
+$dbi->insert(table => 'table1', param => {key1 => 1, key2 => 2});
|
|
| 2613 |
+$model = $dbi->model('table1');
|
|
| 2614 |
+$result = $model->select(column => 'key1'); |
|
| 2615 |
+$result->filter(key1 => sub { $_[0] * 2 });
|
|
| 2616 |
+is_deeply($result->one, {key1 => 2});
|
|
| 2544 | 2617 |
|
| 2618 |
+test 'available_datetype'; |
|
| 2619 |
+$dbi = DBIx::Custom->connect; |
|
| 2620 |
+ok($dbi->can('available_datatype'));
|
|
| 2545 | 2621 |
|
| 2546 | 2622 |
|
| 2623 |
+test 'select prefix option'; |
|
| 2624 |
+$dbi = DBIx::Custom->connect; |
|
| 2625 |
+eval { $dbi->execute('drop table table1') };
|
|
| 2626 |
+$dbi->execute($create_table1); |
|
| 2627 |
+$dbi->insert(table => 'table1', param => {key1 => 1, key2 => 2});
|
|
| 2628 |
+$rows = $dbi->select(prefix => 'key1,', column => 'key2', table => 'table1')->all; |
|
| 2629 |
+is_deeply($rows, [{key1 => 1, key2 => 2}], "table");
|
|
| 2547 | 2630 |
|
| 2631 |
+test 'map_param'; |
|
| 2632 |
+$dbi = DBIx::Custom->connect; |
|
| 2633 |
+$param = $dbi->map_param( |
|
| 2634 |
+ {id => 1, author => 'Ken', price => 1900},
|
|
| 2635 |
+ id => 'book.id', |
|
| 2636 |
+ author => ['book.author', sub { '%' . $_[0] . '%' }],
|
|
| 2637 |
+ price => ['book.price', {if => sub { $_[0] eq 1900 }}]
|
|
| 2638 |
+); |
|
| 2639 |
+is_deeply($param, {'book.id' => 1, 'book.author' => '%Ken%',
|
|
| 2640 |
+ 'book.price' => 1900}); |
|
| 2548 | 2641 |
|
| 2642 |
+$param = $dbi->map_param( |
|
| 2643 |
+ {id => 0, author => 0, price => 0},
|
|
| 2644 |
+ id => 'book.id', |
|
| 2645 |
+ author => ['book.author', sub { '%' . $_[0] . '%' }],
|
|
| 2646 |
+ price => ['book.price', sub { '%' . $_[0] . '%' },
|
|
| 2647 |
+ {if => sub { $_[0] eq 0 }}]
|
|
| 2648 |
+); |
|
| 2649 |
+is_deeply($param, {'book.id' => 0, 'book.author' => '%0%', 'book.price' => '%0%'});
|
|
| 2549 | 2650 |
|
| 2651 |
+$param = $dbi->map_param( |
|
| 2652 |
+ {id => '', author => '', price => ''},
|
|
| 2653 |
+ id => 'book.id', |
|
| 2654 |
+ author => ['book.author', sub { '%' . $_[0] . '%' }],
|
|
| 2655 |
+ price => ['book.price', sub { '%' . $_[0] . '%' },
|
|
| 2656 |
+ {if => sub { $_[0] eq 1 }}]
|
|
| 2657 |
+); |
|
| 2658 |
+is_deeply($param, {});
|
|
| 2550 | 2659 |
|
| 2660 |
+$param = $dbi->map_param( |
|
| 2661 |
+ {id => undef, author => undef, price => undef},
|
|
| 2662 |
+ id => 'book.id', |
|
| 2663 |
+ price => ['book.price', {if => 'exists'}]
|
|
| 2664 |
+); |
|
| 2665 |
+is_deeply($param, {'book.price' => undef});
|
|
| 2551 | 2666 |
|
| 2552 |
- |
|
| 2553 |
- |
|
| 2554 |
- |
|
| 2555 |
- |
|
| 2556 |
- |
|
| 2557 |
- |
|
| 2558 |
- |
|
| 2559 |
- |
|
| 2560 |
- |
|
| 2561 |
- |
|
| 2562 |
- |
|
| 2563 |
- |
|
| 2564 |
- |
|
| 2565 |
- |
|
| 2667 |
+$param = $dbi->map_param( |
|
| 2668 |
+ {price => 'a'},
|
|
| 2669 |
+ id => ['book.id', {if => 'exists'}],
|
|
| 2670 |
+ price => ['book.price', sub { '%' . $_[0] }, {if => 'exists'}]
|
|
| 2671 |
+); |
|
| 2672 |
+is_deeply($param, {'book.price' => '%a'});
|
|
| 2566 | 2673 |
|
| 2567 | 2674 |
1; |
| ... | ... |
@@ -201,156 +201,6 @@ $dbi = DBIx::Custom->connect; |
| 201 | 201 |
|
| 202 | 202 |
|
| 203 | 203 |
|
| 204 |
-test 'separator'; |
|
| 205 |
-$dbi = DBIx::Custom->connect; |
|
| 206 |
-eval { $dbi->execute('drop table table1') };
|
|
| 207 |
-eval { $dbi->execute('drop table table2') };
|
|
| 208 |
-$dbi->execute($create_table1); |
|
| 209 |
-$dbi->execute($create_table2); |
|
| 210 |
- |
|
| 211 |
-$dbi->create_model( |
|
| 212 |
- table => 'table1', |
|
| 213 |
- join => [ |
|
| 214 |
- 'left outer join table2 on table1.key1 = table2.key1' |
|
| 215 |
- ], |
|
| 216 |
- primary_key => ['key1'], |
|
| 217 |
-); |
|
| 218 |
-$model2 = $dbi->create_model( |
|
| 219 |
- table => 'table2', |
|
| 220 |
-); |
|
| 221 |
-$dbi->setup_model; |
|
| 222 |
-$dbi->insert(table => 'table1', param => {key1 => 1, key2 => 2});
|
|
| 223 |
-$dbi->insert(table => 'table2', param => {key1 => 1, key3 => 3});
|
|
| 224 |
-$model = $dbi->model('table1');
|
|
| 225 |
-$result = $model->select( |
|
| 226 |
- column => [ |
|
| 227 |
- $model->mycolumn, |
|
| 228 |
- {table2 => [qw/key1 key3/]}
|
|
| 229 |
- ], |
|
| 230 |
- where => {'table1.key1' => 1}
|
|
| 231 |
-); |
|
| 232 |
-is_deeply($result->one, |
|
| 233 |
- {key1 => 1, key2 => 2, 'table2.key1' => 1, 'table2.key3' => 3});
|
|
| 234 |
-is_deeply($model2->select->one, {key1 => 1, key3 => 3});
|
|
| 235 |
- |
|
| 236 |
-$dbi->separator('__');
|
|
| 237 |
-$model = $dbi->model('table1');
|
|
| 238 |
-$result = $model->select( |
|
| 239 |
- column => [ |
|
| 240 |
- $model->mycolumn, |
|
| 241 |
- {table2 => [qw/key1 key3/]}
|
|
| 242 |
- ], |
|
| 243 |
- where => {'table1.key1' => 1}
|
|
| 244 |
-); |
|
| 245 |
-is_deeply($result->one, |
|
| 246 |
- {key1 => 1, key2 => 2, 'table2__key1' => 1, 'table2__key3' => 3});
|
|
| 247 |
-is_deeply($model2->select->one, {key1 => 1, key3 => 3});
|
|
| 248 |
- |
|
| 249 |
-$dbi->separator('-');
|
|
| 250 |
-$model = $dbi->model('table1');
|
|
| 251 |
-$result = $model->select( |
|
| 252 |
- column => [ |
|
| 253 |
- $model->mycolumn, |
|
| 254 |
- {table2 => [qw/key1 key3/]}
|
|
| 255 |
- ], |
|
| 256 |
- where => {'table1.key1' => 1}
|
|
| 257 |
-); |
|
| 258 |
-is_deeply($result->one, |
|
| 259 |
- {key1 => 1, key2 => 2, 'table2-key1' => 1, 'table2-key3' => 3});
|
|
| 260 |
-is_deeply($model2->select->one, {key1 => 1, key3 => 3});
|
|
| 261 |
- |
|
| 262 |
- |
|
| 263 |
-test 'filter_off'; |
|
| 264 |
-$dbi = DBIx::Custom->connect; |
|
| 265 |
-eval { $dbi->execute('drop table table1') };
|
|
| 266 |
-eval { $dbi->execute('drop table table2') };
|
|
| 267 |
-$dbi->execute($create_table1); |
|
| 268 |
-$dbi->execute($create_table2); |
|
| 269 |
- |
|
| 270 |
-$dbi->create_model( |
|
| 271 |
- table => 'table1', |
|
| 272 |
- join => [ |
|
| 273 |
- 'left outer join table2 on table1.key1 = table2.key1' |
|
| 274 |
- ], |
|
| 275 |
- primary_key => ['key1'], |
|
| 276 |
-); |
|
| 277 |
-$dbi->setup_model; |
|
| 278 |
-$dbi->insert(table => 'table1', param => {key1 => 1, key2 => 2});
|
|
| 279 |
-$model = $dbi->model('table1');
|
|
| 280 |
-$result = $model->select(column => 'key1'); |
|
| 281 |
-$result->filter(key1 => sub { $_[0] * 2 });
|
|
| 282 |
-is_deeply($result->one, {key1 => 2});
|
|
| 283 |
- |
|
| 284 |
-test 'available_datetype'; |
|
| 285 |
-$dbi = DBIx::Custom->connect; |
|
| 286 |
-ok($dbi->can('available_datatype'));
|
|
| 287 |
- |
|
| 288 |
- |
|
| 289 |
-test 'select prefix option'; |
|
| 290 |
-$dbi = DBIx::Custom->connect; |
|
| 291 |
-eval { $dbi->execute('drop table table1') };
|
|
| 292 |
-$dbi->execute($create_table1); |
|
| 293 |
-$dbi->insert(table => 'table1', param => {key1 => 1, key2 => 2});
|
|
| 294 |
-$rows = $dbi->select(prefix => 'key1,', column => 'key2', table => 'table1')->all; |
|
| 295 |
-is_deeply($rows, [{key1 => 1, key2 => 2}], "table");
|
|
| 296 |
- |
|
| 297 |
-test 'map_param'; |
|
| 298 |
-$dbi = DBIx::Custom->connect; |
|
| 299 |
-$param = $dbi->map_param( |
|
| 300 |
- {id => 1, author => 'Ken', price => 1900},
|
|
| 301 |
- id => 'book.id', |
|
| 302 |
- author => ['book.author', sub { '%' . $_[0] . '%' }],
|
|
| 303 |
- price => ['book.price', {if => sub { $_[0] eq 1900 }}]
|
|
| 304 |
-); |
|
| 305 |
-is_deeply($param, {'book.id' => 1, 'book.author' => '%Ken%',
|
|
| 306 |
- 'book.price' => 1900}); |
|
| 307 |
- |
|
| 308 |
-$param = $dbi->map_param( |
|
| 309 |
- {id => 0, author => 0, price => 0},
|
|
| 310 |
- id => 'book.id', |
|
| 311 |
- author => ['book.author', sub { '%' . $_[0] . '%' }],
|
|
| 312 |
- price => ['book.price', sub { '%' . $_[0] . '%' },
|
|
| 313 |
- {if => sub { $_[0] eq 0 }}]
|
|
| 314 |
-); |
|
| 315 |
-is_deeply($param, {'book.id' => 0, 'book.author' => '%0%', 'book.price' => '%0%'});
|
|
| 316 |
- |
|
| 317 |
-$param = $dbi->map_param( |
|
| 318 |
- {id => '', author => '', price => ''},
|
|
| 319 |
- id => 'book.id', |
|
| 320 |
- author => ['book.author', sub { '%' . $_[0] . '%' }],
|
|
| 321 |
- price => ['book.price', sub { '%' . $_[0] . '%' },
|
|
| 322 |
- {if => sub { $_[0] eq 1 }}]
|
|
| 323 |
-); |
|
| 324 |
-is_deeply($param, {});
|
|
| 325 |
- |
|
| 326 |
-$param = $dbi->map_param( |
|
| 327 |
- {id => undef, author => undef, price => undef},
|
|
| 328 |
- id => 'book.id', |
|
| 329 |
- price => ['book.price', {if => 'exists'}]
|
|
| 330 |
-); |
|
| 331 |
-is_deeply($param, {'book.price' => undef});
|
|
| 332 |
- |
|
| 333 |
-$param = $dbi->map_param( |
|
| 334 |
- {price => 'a'},
|
|
| 335 |
- id => ['book.id', {if => 'exists'}],
|
|
| 336 |
- price => ['book.price', sub { '%' . $_[0] }, {if => 'exists'}]
|
|
| 337 |
-); |
|
| 338 |
-is_deeply($param, {'book.price' => '%a'});
|
|
| 339 |
- |
|
| 340 |
- |
|
| 341 |
-test 'table_alias'; |
|
| 342 |
-$dbi = DBIx::Custom->connect; |
|
| 343 |
-eval { $dbi->execute('drop table table1') };
|
|
| 344 |
-$dbi->execute("create table table1 (key1 Date, key2 datetime)");
|
|
| 345 |
-$dbi->type_rule( |
|
| 346 |
- into1 => {
|
|
| 347 |
- date => sub { uc $_[0] }
|
|
| 348 |
- } |
|
| 349 |
-); |
|
| 350 |
-$dbi->execute("insert into table1 (key1) values (:table2.key1)", {'table2.key1' => 'a'},
|
|
| 351 |
- table_alias => {table2 => 'table1'});
|
|
| 352 |
-$result = $dbi->select(table => 'table1'); |
|
| 353 |
-is($result->one->{key1}, 'A');
|
|
| 354 | 204 |
|
| 355 | 205 |
|
| 356 | 206 |
test 'order'; |
| ... | ... |
@@ -758,6 +608,20 @@ like($@, qr/unexpected "{"/, "error : 2");
|
| 758 | 608 |
|
| 759 | 609 |
|
| 760 | 610 |
### a little complex test |
| 611 |
+test 'table_alias'; |
|
| 612 |
+$dbi = DBIx::Custom->connect; |
|
| 613 |
+eval { $dbi->execute('drop table table1') };
|
|
| 614 |
+$dbi->execute("create table table1 (key1 Date, key2 datetime)");
|
|
| 615 |
+$dbi->type_rule( |
|
| 616 |
+ into1 => {
|
|
| 617 |
+ date => sub { uc $_[0] }
|
|
| 618 |
+ } |
|
| 619 |
+); |
|
| 620 |
+$dbi->execute("insert into table1 (key1) values (:table2.key1)", {'table2.key1' => 'a'},
|
|
| 621 |
+ table_alias => {table2 => 'table1'});
|
|
| 622 |
+$result = $dbi->select(table => 'table1'); |
|
| 623 |
+is($result->one->{key1}, 'A');
|
|
| 624 |
+ |
|
| 761 | 625 |
test 'select() wrap option'; |
| 762 | 626 |
$dbi = DBIx::Custom->connect; |
| 763 | 627 |
eval { $dbi->execute('drop table table1') };
|