... | ... |
@@ -1,4 +1,5 @@ |
1 | 1 |
0.1653 |
2 |
+ - added experimental DBIx::Custom::Result remove_end_filter() |
|
2 | 3 |
- added experimental DBIx::Custom::Model insert_at() |
3 | 4 |
- added experimental insert_at() |
4 | 5 |
- improved error message |
... | ... |
@@ -1435,7 +1435,7 @@ Arguments is same as C<delete> method, |
1435 | 1435 |
except that C<delete_all> don't have C<where> argument. |
1436 | 1436 |
Return value of C<delete_all()> is the count of affected rows. |
1437 | 1437 |
|
1438 |
-=head3 C<delete_at()> |
|
1438 |
+=head3 C<(experimental) delete_at()> |
|
1439 | 1439 |
|
1440 | 1440 |
To delete row by using primary key, use C<delete_at()> |
1441 | 1441 |
|
... | ... |
@@ -1476,6 +1476,22 @@ default to 0. This is experimental. |
1476 | 1476 |
This is overwrites C<default_bind_filter>. |
1477 | 1477 |
Return value of C<insert()> is the count of affected rows. |
1478 | 1478 |
|
1479 |
+=head3 C<(experimental) insert_at()> |
|
1480 |
+ |
|
1481 |
+To insert row by using primary key, use C<insert_at()> |
|
1482 |
+ |
|
1483 |
+ $dbi->insert_at( |
|
1484 |
+ table => 'book', |
|
1485 |
+ primary_key => ['id'], |
|
1486 |
+ where => ['123'], |
|
1487 |
+ param => {name => 'Ken'} |
|
1488 |
+ ); |
|
1489 |
+ |
|
1490 |
+In this example, row which id column is 123 is inserted. |
|
1491 |
+NOTE that you must pass array reference as C<where>. |
|
1492 |
+If C<param> contains primary key, |
|
1493 |
+the key and value is delete from C<param>. |
|
1494 |
+ |
|
1479 | 1495 |
=head2 C<(experimental) each_column> |
1480 | 1496 |
|
1481 | 1497 |
$dbi->each_column( |
... | ... |
@@ -1648,7 +1664,7 @@ First element is a string. it contains tags, |
1648 | 1664 |
such as "{= title} or {like author}". |
1649 | 1665 |
Second element is paramters. |
1650 | 1666 |
|
1651 |
-=head3 C<select_at()> |
|
1667 |
+=head3 C<(experimental) select_at()> |
|
1652 | 1668 |
|
1653 | 1669 |
To select row by using primary key, use C<select_at()>. |
1654 | 1670 |
|
... | ... |
@@ -1709,7 +1725,7 @@ Arguments is same as C<update> method, |
1709 | 1725 |
except that C<update_all> don't have C<where> argument. |
1710 | 1726 |
Return value of C<update_all()> is the count of affected rows. |
1711 | 1727 |
|
1712 |
-=head3 C<update_at()> |
|
1728 |
+=head3 C<(experimental) update_at()> |
|
1713 | 1729 |
|
1714 | 1730 |
To update row by using primary key, use C<update_at()> |
1715 | 1731 |
|
... | ... |
@@ -693,6 +693,10 @@ use C<end_filter()> to add end filter. |
693 | 693 |
|
694 | 694 |
In this example, L<Time::Piece> object is converted to readable format. |
695 | 695 |
|
696 |
+You can remove end_filter by C<end_filter> |
|
697 |
+ |
|
698 |
+ $result->remove_end_filter; |
|
699 |
+ |
|
696 | 700 |
=head3 Automate applying filter : C<each_column()> |
697 | 701 |
|
698 | 702 |
It is useful to apply filter automatically at date type columns. |
... | ... |
@@ -703,6 +703,10 @@ C<DBIx::Custom::Result>のC<filter()>を使用します。 |
703 | 703 |
|
704 | 704 |
この例ではL<Time::Piece>オブジェクトを読みやすい書式に変換しています。 |
705 | 705 |
|
706 |
+最後のフィルタリングをC<remove_filter()>で取り除くこともできます。 |
|
707 |
+ |
|
708 |
+$result->remove_end_filter; |
|
709 |
+ |
|
706 | 710 |
=head3 フィルタの適用の自動化 C<each_column()> |
707 | 711 |
|
708 | 712 |
日付型の列は自動的にフィルタを適用できると便利です。 |
... | ... |
@@ -247,6 +247,14 @@ sub fetch_multi { |
247 | 247 |
return $rows; |
248 | 248 |
} |
249 | 249 |
|
250 |
+sub remove_end_filter { |
|
251 |
+ my $self = shift; |
|
252 |
+ |
|
253 |
+ $self->{end_filter} = {}; |
|
254 |
+ |
|
255 |
+ return $self; |
|
256 |
+} |
|
257 |
+ |
|
250 | 258 |
# Deprecated |
251 | 259 |
sub default_filter { |
252 | 260 |
my $self = shift; |
... | ... |
@@ -428,6 +436,12 @@ Filters. |
428 | 436 |
These each filters override the filters applied by C<apply_filter> of |
429 | 437 |
L<DBIx::Custom>. |
430 | 438 |
|
439 |
+=head2 C<(experimental) remove_end_filter> |
|
440 |
+ |
|
441 |
+ $result->remove_end_filter; |
|
442 |
+ |
|
443 |
+Remove end filter. |
|
444 |
+ |
|
431 | 445 |
=head2 C<(experimental) stash> |
432 | 446 |
|
433 | 447 |
my $stash = $result->stash; |
... | ... |
@@ -875,6 +875,17 @@ $result->end_filter(key1 => undef); |
875 | 875 |
$row = $result->fetch_hash_first; |
876 | 876 |
is_deeply($row, {key1 => 1, key2 => 40}, 'apply_filter overwrite'); |
877 | 877 |
|
878 |
+test 'remove_end_filter'; |
|
879 |
+$dbi = DBIx::Custom->connect($NEW_ARGS->{0}); |
|
880 |
+$dbi->execute($CREATE_TABLE->{0}); |
|
881 |
+$dbi->insert(table => 'table1', param => {key1 => 1, key2 => 2}); |
|
882 |
+$result = $dbi->select(table => 'table1'); |
|
883 |
+$result->filter(key1 => sub { $_[0] * 2 }, key2 => sub { $_[0] * 4 }); |
|
884 |
+$row = $result->end_filter(key1 => sub { $_[0] * 3 }, key2 => sub { $_[0] * 5 }) |
|
885 |
+ ->remove_end_filter |
|
886 |
+ ->fetch_first; |
|
887 |
+is_deeply($row, [2, 8]); |
|
888 |
+ |
|
878 | 889 |
test 'empty where select'; |
879 | 890 |
$dbi = DBIx::Custom->connect($NEW_ARGS->{0}); |
880 | 891 |
$dbi->execute($CREATE_TABLE->{0}); |