Commit | Line | Data |
445e5e31 |
1 | package DBIx::Class::InflateColumn::DateTime; |
2 | |
3 | use strict; |
4 | use warnings; |
5 | use base qw/DBIx::Class/; |
6 | |
7 | __PACKAGE__->load_components(qw/InflateColumn/); |
8 | |
9 | __PACKAGE__->mk_group_accessors('simple' => '__datetime_parser'); |
10 | |
11 | sub register_column { |
12 | my ($self, $column, $info, @rest) = @_; |
13 | $self->next::method($column, $info, @rest); |
14 | if ($info->{data_type} =~ /^datetime$/i) { |
15 | $self->inflate_column( |
16 | $column => |
17 | { |
18 | inflate => sub { |
19 | my ($value, $obj) = @_; |
20 | $obj->_datetime_parser->parse_datetime($value); |
21 | }, |
22 | deflate => sub { |
23 | my ($value, $obj) = @_; |
24 | $obj->_datetime_parser->format_datetime($value); |
25 | }, |
26 | } |
27 | ); |
28 | } |
29 | } |
30 | |
31 | sub _datetime_parser { |
32 | my $self = shift; |
33 | if (my $parser = $self->__datetime_parser) { |
34 | return $parser; |
35 | } |
36 | my $parser = $self->result_source->storage->datetime_parser(@_); |
37 | return $self->__datetime_parser($parser); |
38 | } |
39 | |
40 | 1; |