starts_when => { data_type => 'datetime', extra => { timezone => "America/Chicago" } }
);
+If you want to inflate no matter what data_type your column is,
+use inflate_datetime or inflate_date:
+
+ __PACKAGE__->add_columns(
+ starts_when => { data_type => 'varchar', inflate_datetime => 1 }
+ );
+
+ __PACKAGE__->add_columns(
+ starts_when => { data_type => 'varchar', inflate_date => 1 }
+ );
+
=head1 DESCRIPTION
This module figures out the type of DateTime::Format::* class to
return unless defined($info->{data_type});
my $type = lc($info->{data_type});
$type = 'datetime' if ($type =~ /^timestamp/);
+ $type = 'datetime' if exists $info->{inflate_datetime} and $info->{inflate_datetime};
+ $type = 'date' if exists $info->{inflate_date} and $info->{inflate_date};
my $timezone;
if ( exists $info->{extra} and exists $info->{extra}{timezone} and defined $info->{extra}{timezone} ) {
$timezone = $info->{extra}{timezone};
eval { require DateTime::Format::MySQL };
plan skip_all => "Need DateTime::Format::MySQL for inflation tests" if $@;
-plan tests => 21;
+plan tests => 25;
# inflation test
my $event = $schema->resultset("Event")->find(1);
## timestamp field
isa_ok($event->created_on, 'DateTime', 'DateTime returned');
+## varchar fields
+isa_ok($event->varchar_date, 'DateTime', 'DateTime returned');
+isa_ok($event->varchar_datetime, 'DateTime', 'DateTime returned');
+
# klunky, but makes older Test::More installs happy
my $createo = $event->created_on;
is("$createo", '2006-06-22T21:00:05', 'Correct date/time');
like( $@, qr/invalid date format/i, "Invalid date format exception");
}
+## varchar field using inflate_date => 1
+my $varchar_date = $event->varchar_date;
+is("$varchar_date", '2006-07-23T00:00:00', 'Correct date/time');
+
+## varchar field using inflate_datetime => 1
+my $varchar_datetime = $event->varchar_datetime;
+is("$varchar_datetime", '2006-05-22T19:05:07', 'Correct date/time');
]);
$schema->populate('Event', [
- [ qw/id starts_at created_on/ ],
- [ 1, '2006-04-25 22:24:33', '2006-06-22 21:00:05'],
+ [ qw/id starts_at created_on varchar_date varchar_datetime/ ],
+ [ 1, '2006-04-25 22:24:33', '2006-06-22 21:00:05', '2006-07-23', '2006-05-22 19:05:07'],
]);
$schema->populate('Link', [
__PACKAGE__->add_columns(
id => { data_type => 'integer', is_auto_increment => 1 },
starts_at => { data_type => 'datetime', datetime_undef_if_invalid => 1 },
- created_on => { data_type => 'timestamp' }
+ created_on => { data_type => 'timestamp' },
+ varchar_date => { data_type => 'varchar', inflate_date => 1, size => 20, is_nullable => 1 },
+ varchar_datetime => { data_type => 'varchar', inflate_datetime => 1, size => 20, is_nullable => 1 },
);
__PACKAGE__->set_primary_key('id');
--
-- Created by SQL::Translator::Producer::SQLite
--- Created on Fri Oct 24 14:20:32 2008
+-- Created on Fri Oct 24 21:02:41 2008
--
BEGIN TRANSACTION;
CREATE TABLE event (
id INTEGER PRIMARY KEY NOT NULL,
starts_at datetime NOT NULL,
- created_on timestamp NOT NULL
+ created_on timestamp NOT NULL,
+ varchar_date varchar(20),
+ varchar_datetime varchar(20)
);