prep release
[dbsrgits/DBIx-Class-DateTime-Epoch.git] / lib / DBIx / Class / DateTime / Epoch.pm
index f392c91..ec857f8 100644 (file)
@@ -3,43 +3,51 @@ package DBIx::Class::DateTime::Epoch;
 use strict;
 use warnings;
 
-our $VERSION = '0.05';
+our $VERSION = '0.07';
 
 use base qw( DBIx::Class );
 
 use DateTime;
 
-__PACKAGE__->load_components( qw( DynamicDefault InflateColumn::DateTime ) );
+__PACKAGE__->load_components( qw( InflateColumn::DateTime ) );
 
 # back compat
-sub register_column {
-    my( $class, $col, $info ) = @_;
+sub add_columns {
+    my( $class, @cols ) = @_;
+    my @columns;
 
-    if( my $type = delete $info->{ epoch } ) {
-        $info->{ inflate_datetime } = 'epoch';
+    while (my $col = shift @cols) {
+        my $info = ref $cols[0] ? shift @cols : {};
 
-        if( $type =~ m{^[cm]time$} ) {
-            __PACKAGE__->load_components( 'TimeStamp' );
-            $info->{ dynamic_default_on_create } = 'get_timestamp';
-            $info->{ dynamic_default_on_update } = 'get_timestamp' if $type eq 'mtime';
+        if( my $type = delete $info->{ epoch } ) {
+            $info->{ inflate_datetime } = 'epoch';
+
+            if( $type =~ m{^[cm]time$} ) {
+                __PACKAGE__->load_components( 'TimeStamp' );
+                $info->{ set_on_create } = 1;
+                $info->{ set_on_update } = 1 if $type eq 'mtime';
+            }
         }
+
+        push @columns, $col => $info;
+
     }
 
-    $class->next::method( $col, $info );
+    $class->next::method( @columns );
 }
 
 sub _inflate_to_datetime {
     my( $self, $value, $info, @rest ) = @_;
-    $self->next::method( $value, $info, @rest )
-        unless $info->{ data_type } =~ m{int} || $info->{ inflate_datetime } eq 'epoch';
+    return $self->next::method( $value, $info, @rest )
+        unless $info->{ data_type } =~ m{int}i || $info->{ inflate_datetime } eq 'epoch';
 
     return DateTime->from_epoch( epoch => $value );
 }
 
 sub _deflate_from_datetime {
     my( $self, $value, $info, @rest ) = @_;
-    $self->next::method( $value, $info, @rest )
-        unless $info->{ data_type } =~ m{int} || $info->{ inflate_datetime } eq 'epoch';
+    return $self->next::method( $value, $info, @rest )
+        unless $info->{ data_type } =~ m{int}i || $info->{ inflate_datetime } eq 'epoch';
 
     return $value->epoch;
 }
@@ -110,6 +118,10 @@ modifications.
 
 =head1 METHODS
 
+=head2 add_columns( )
+
+Provides backwards compatibility with the older DateTime::Epoch API.
+
 =head2 _inflate_to_datetime( )
 
 Overrides column inflation to use C<Datetime-E<gt>from_epoch>.
@@ -122,11 +134,11 @@ Overrides column deflation to call C<epoch()> on the column value.
 
 =over 4
 
-=item * DBIx::Class
+=item * L<DBIx::Class>
 
-=item * DBIx::Class::TimeStamp
+=item * L<DBIx::Class::TimeStamp>
 
-=item * DateTime
+=item * L<DateTime>
 
 =back
 
@@ -138,7 +150,7 @@ Adam Paynter E<lt>adapay@cpan.orgE<gt>
 
 =head1 COPYRIGHT AND LICENSE
 
-Copyright 2006-2009 by Brian Cassidy
+Copyright 2006-2011 by Brian Cassidy
 
 This library is free software; you can redistribute it and/or modify
 it under the same terms as Perl itself.