Missing stuff for DateTime branch
[dbsrgits/DBIx-Class.git] / lib / DBIx / Class / InflateColumn / DateTime.pm
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;