- added EXPERIMENTAL timestamp option to DBIx:...
...:Custom insert
| ... | ... |
@@ -1,4 +1,7 @@ |
| 1 | 1 |
0.1722 |
| 2 |
+ - added EXPERIMENTAL timestamp option to DBIx::Custom insert |
|
| 3 |
+ and update method. |
|
| 4 |
+ - added EXPERIMENTAL timestamp attribute to DBIx::Custom |
|
| 2 | 5 |
- added {KEY => {OPTION_KEY => OPTION_VALUE} syntax
|
| 3 | 6 |
to EXPERIMENTAL DBIx::Custom::Mapper map method |
| 4 | 7 |
- added {KEY => sub { VALUE }} syntax
|
| ... | ... |
@@ -65,7 +65,8 @@ has [qw/connector dsn password quote user exclude_table user_table_info |
| 65 | 65 |
safety_character => '\w', |
| 66 | 66 |
separator => '.', |
| 67 | 67 |
stash => sub { {} },
|
| 68 |
- tag_parse => 1; |
|
| 68 |
+ tag_parse => 1, |
|
| 69 |
+ timestamp => sub { {} };
|
|
| 69 | 70 |
|
| 70 | 71 |
sub available_datatype {
|
| 71 | 72 |
my $self = shift; |
| ... | ... |
@@ -374,8 +375,8 @@ sub each_table {
|
| 374 | 375 |
|
| 375 | 376 |
our %VALID_ARGS = map { $_ => 1 } qw/append allow_delete_all
|
| 376 | 377 |
allow_update_all bind_type column filter id join param prefix primary_key |
| 377 |
- query relation sqlfilter table table_alias type type_rule_off type_rule1_off |
|
| 378 |
- type_rule2_off wrap/; |
|
| 378 |
+ query relation sqlfilter table table_alias timestamp type type_rule_off |
|
| 379 |
+ type_rule1_off type_rule2_off wrap/; |
|
| 379 | 380 |
|
| 380 | 381 |
sub execute {
|
| 381 | 382 |
my $self = shift; |
| ... | ... |
@@ -614,6 +615,19 @@ sub insert {
|
| 614 | 615 |
$primary_key = [$primary_key] unless ref $primary_key eq 'ARRAY'; |
| 615 | 616 |
my $prefix = delete $args{prefix};
|
| 616 | 617 |
my $wrap = delete $args{wrap};
|
| 618 |
+ my $timestamp = $args{timestamp};
|
|
| 619 |
+ |
|
| 620 |
+ # Timestamp |
|
| 621 |
+ if ($timestamp) {
|
|
| 622 |
+ my $column = $self->timestamp->{insert}[0];
|
|
| 623 |
+ my $v = $self->timestamp->{insert}[1];
|
|
| 624 |
+ my $value; |
|
| 625 |
+ |
|
| 626 |
+ if (defined $column && defined $v) {
|
|
| 627 |
+ $value = ref $v eq 'SCALAR' ? $v : \$v; |
|
| 628 |
+ $param->{$column} = $value;
|
|
| 629 |
+ } |
|
| 630 |
+ } |
|
| 617 | 631 |
|
| 618 | 632 |
# Merge parameter |
| 619 | 633 |
if (defined $id) {
|
| ... | ... |
@@ -1149,6 +1163,20 @@ sub update {
|
| 1149 | 1163 |
$primary_key = [$primary_key] unless ref $primary_key eq 'ARRAY'; |
| 1150 | 1164 |
my $prefix = delete $args{prefix};
|
| 1151 | 1165 |
my $wrap = delete $args{wrap};
|
| 1166 |
+ my $timestamp = $args{timestamp};
|
|
| 1167 |
+ |
|
| 1168 |
+ # Timestamp |
|
| 1169 |
+ if ($timestamp) {
|
|
| 1170 |
+ my $column = $self->timestamp->{update}[0];
|
|
| 1171 |
+ my $v = $self->timestamp->{update}[1];
|
|
| 1172 |
+ my $value; |
|
| 1173 |
+ |
|
| 1174 |
+ if (defined $column && defined $v) {
|
|
| 1175 |
+ $value = ref $v eq 'SCALAR' ? $v : \$v; |
|
| 1176 |
+ $param->{$column} = $value;
|
|
| 1177 |
+ } |
|
| 1178 |
+ } |
|
| 1179 |
+ |
|
| 1152 | 1180 |
|
| 1153 | 1181 |
# Update clause |
| 1154 | 1182 |
my $update_clause = $self->update_param($param, {wrap => $wrap});
|
| ... | ... |
@@ -2185,6 +2213,27 @@ The performance is up. |
| 2185 | 2213 |
Enable DEPRECATED tag parsing functionality, default to 1. |
| 2186 | 2214 |
If you want to disable tag parsing functionality, set to 0. |
| 2187 | 2215 |
|
| 2216 |
+=head2 C<timestamp EXPERIMENTAL> |
|
| 2217 |
+ |
|
| 2218 |
+ my $timestamp = $dbi->timestamp($timestamp); |
|
| 2219 |
+ $dbi = $dbi->timestamp; |
|
| 2220 |
+ |
|
| 2221 |
+Timestamp information. |
|
| 2222 |
+ |
|
| 2223 |
+ $dbi->timestamp({
|
|
| 2224 |
+ insert => [created_at => 'NOW()'], |
|
| 2225 |
+ update => [updated_at => 'NOW()'] |
|
| 2226 |
+ }); |
|
| 2227 |
+ |
|
| 2228 |
+This value is used when C<insert> or C<update> method's C<timestamp> |
|
| 2229 |
+option is specified. |
|
| 2230 |
+ |
|
| 2231 |
+C<insert> is used by C<insert> method, and C<update> is |
|
| 2232 |
+used by C<update> method. |
|
| 2233 |
+ |
|
| 2234 |
+Key, such as C<create_at> is column name. |
|
| 2235 |
+value such as C<NOW()> is DB function. |
|
| 2236 |
+ |
|
| 2188 | 2237 |
=head2 C<user> |
| 2189 | 2238 |
|
| 2190 | 2239 |
my $user = $dbi->user; |
| ... | ... |
@@ -2776,6 +2825,14 @@ Table name. |
| 2776 | 2825 |
|
| 2777 | 2826 |
Same as C<execute> method's C<type_rule_off> option. |
| 2778 | 2827 |
|
| 2828 |
+=item C<timestamp EXPERIMENTAL> |
|
| 2829 |
+ |
|
| 2830 |
+ timestamp => 1 |
|
| 2831 |
+ |
|
| 2832 |
+If this value is set to 1, |
|
| 2833 |
+automatically created timestamp column is set based on |
|
| 2834 |
+C<timestamp> attribute's C<insert> value. |
|
| 2835 |
+ |
|
| 2779 | 2836 |
=item C<type_rule1_off> EXPERIMENTAL |
| 2780 | 2837 |
|
| 2781 | 2838 |
type_rule1_off => 1 |
| ... | ... |
@@ -3366,6 +3423,14 @@ Same as C<execute> method's C<sqlfilter> option. |
| 3366 | 3423 |
|
| 3367 | 3424 |
Table name. |
| 3368 | 3425 |
|
| 3426 |
+=item C<timestamp EXPERIMENTAL> |
|
| 3427 |
+ |
|
| 3428 |
+ timestamp => 1 |
|
| 3429 |
+ |
|
| 3430 |
+If this value is set to 1, |
|
| 3431 |
+automatically updated timestamp column is set based on |
|
| 3432 |
+C<timestamp> attribute's C<update> value. |
|
| 3433 |
+ |
|
| 3369 | 3434 |
=item C<type_rule_off> EXPERIMENTAL |
| 3370 | 3435 |
|
| 3371 | 3436 |
Same as C<execute> method's C<type_rule_off> option. |
| ... | ... |
@@ -506,6 +506,16 @@ $result = $dbi->execute("select * from $table1");
|
| 506 | 506 |
$rows = $result->all; |
| 507 | 507 |
is_deeply($rows, [{$key1 => 0, $key2 => 2}, {$key1 => 3, $key2 => 4}], "basic");
|
| 508 | 508 |
|
| 509 |
+eval { $dbi->execute("drop table $table1") };
|
|
| 510 |
+$dbi->execute($create_table1); |
|
| 511 |
+$dbi->timestamp({
|
|
| 512 |
+ insert => [$key1 => '5'] |
|
| 513 |
+}); |
|
| 514 |
+$dbi->insert(table => $table1, param => {$key2 => 2}, timestamp => 1);
|
|
| 515 |
+$result = $dbi->execute("select * from $table1");
|
|
| 516 |
+$rows = $result->all; |
|
| 517 |
+is_deeply($rows, [{$key1 => 5, $key2 => 2}], "basic");
|
|
| 518 |
+ |
|
| 509 | 519 |
test 'update'; |
| 510 | 520 |
eval { $dbi->execute("drop table $table1") };
|
| 511 | 521 |
$dbi->execute($create_table1_2); |
| ... | ... |
@@ -653,6 +663,17 @@ is_deeply($rows, [{$key1 => 1, $key2 => 11, $key3 => 3, $key4 => 4, $key5 => 5},
|
| 653 | 663 |
{$key1 => 6, $key2 => 7, $key3 => 8, $key4 => 9, $key5 => 10}],
|
| 654 | 664 |
"basic"); |
| 655 | 665 |
|
| 666 |
+eval { $dbi->execute("drop table $table1") };
|
|
| 667 |
+$dbi->execute($create_table1); |
|
| 668 |
+$dbi->timestamp({
|
|
| 669 |
+ update => [$key1 => '5'] |
|
| 670 |
+}); |
|
| 671 |
+$dbi->insert(table => $table1, param => {$key1 => 1, $key2 => 2});
|
|
| 672 |
+$dbi->update(table => $table1, timestamp => 1, where => {$key2 => 2});
|
|
| 673 |
+$result = $dbi->execute("select * from $table1");
|
|
| 674 |
+$rows = $result->all; |
|
| 675 |
+is_deeply($rows, [{$key1 => 5, $key2 => 2}], "basic");
|
|
| 676 |
+ |
|
| 656 | 677 |
test 'update_all'; |
| 657 | 678 |
eval { $dbi->execute("drop table $table1") };
|
| 658 | 679 |
$dbi->execute($create_table1_2); |