1 package DBIx::Class::DateTime::Epoch;
\r
6 use base qw( DBIx::Class );
\r
10 __PACKAGE__->mk_classdata( ctime_columns => [ ] );
\r
11 __PACKAGE__->mk_classdata( mtime_columns => [ ] );
\r
13 sub register_column {
\r
14 my( $class, $col, $info ) = @_;
\r
15 $class->next::method( $col, $info );
\r
17 if( my $type = $info->{ datetime } ) {
\r
18 $class->ctime_columns( [ @{ $class->ctime_columns }, $col ] ) if $type eq 'ctime';
\r
19 $class->mtime_columns( [ @{ $class->mtime_columns }, $col ] ) if $type eq 'mtime';
\r
21 $class->inflate_column(
\r
23 inflate => sub { DateTime->from_epoch( epoch => shift ) },
\r
24 deflate => sub { shift->epoch }
\r
34 for my $column ( @{ $self->ctime_columns }, @{ $self->mtime_columns } ) {
\r
35 next if defined $self->get_column( $column );
\r
36 $self->store_column( $column => $time );
\r
39 $self->next::method( @_ );
\r
46 for my $column ( @{ $self->mtime_columns } ) {
\r
47 $self->set_column( $column => $time );
\r
50 $self->next::method( @_ );
\r