DBIx::Class::AutoInflateDateTimeMySQL

ネーミングセンスはともかく、
いちいち面倒でしょってことで。
auto_inflate_datetime以外は動かしてません。
多分うごくかな?


package DBIx::Class::AutoInflateDateTimeMySQL;
use strict;
use warnings;
use vars qw( $VERSION );
use base 'DBIx::Class::Row';
use DateTime::Format::MySQL;
$VERSION = 0.01;
sub auto_inflate_date {
my ($self, $col) = @_;
my $attrs = {
inflate => sub { DateTime::Format::MySQL->parse_date(shift) },
deflate => sub { DateTime::Format::MySQL->format_date(shift) }
};
$self->throw_exception("No such column $col to inflate") unless $self->has_column($col);
$self->column_info($col)->{_inflate_info} = $attrs;
$self->mk_group_accessors('inflated_column' => $col);
return 1;
}
sub auto_inflate_datetime {
my ($self, $col) = @_;
my $attrs = {
inflate => sub { DateTime::Format::MySQL->parse_datetime(shift) },
deflate => sub { DateTime::Format::MySQL->format_datetime(shift) }
};
$self->throw_exception("No such column $col to inflate") unless $self->has_column($col);
$self->column_info($col)->{_inflate_info} = $attrs;
$self->mk_group_accessors('inflated_column' => $col);
return 1;
}
sub auto_inflate_timestamp {
my ($self, $col) = @_;
my $attrs = {
inflate => sub { DateTime::Format::MySQL->parse_timestamp(shift) },
deflate => sub { DateTime::Format::MySQL->format_timestamp(shift) }
};
$self->throw_exception("No such column $col to inflate") unless $self->has_column($col);
$self->column_info($col)->{_inflate_info} = $attrs;
$self->mk_group_accessors('inflated_column' => $col);
return 1;
}
1;