朝7時半に起きまして、そのまま寝転がりながらコード書き。DBIx::Classを使ってみて、早速DBIx::Class::Plugin::DateTimeを作ろうかと思ったんだけど、ドキュメント少な!結局search.cpan.orgでgrepしまくって、どうやらDBIx::Class::InflateColumnが怪しいというのがわかって、とりあえずMySQLで軽く書いてみる:



package DBIx::Class::Plugin::DateTime::MySQL;
use strict;
use DateTime::Format::MySQL;

sub inflate_mysql_datetime { DateTime::Format::MySQL->parse_datetime(shift) }
sub deflate_mysql_datetime { DateTime::Format::MySQL->format_datetime(shift) }
sub has_datetime
{
my $class = shift;
my $column = shift;

$class->inflate_column($column, {
inflate => \&inflate_mysql_datetime,
deflate => \&deflate_mysql_datetime
});
}

でまぁ、問題はこれをどう使うのかーって事かな。DBIx::Class的にはなんとなーくMixIn的なアプローチではなく、継承を使うような気がするんだけど・・・ってことは



use DBIx::Class::Loader;

DBIx::Class::Loader->new(
dsn => 'dbi:mysql:....',
user => '...',
password => '...',
additional_base_classes => [ qw(DBIx::Class::Plugin::DateTime::MySQL) ]
);

って感じかな。でもどうせなら自動的にデータベースのタイプによって使用するクラスを判別して欲しいかな。ってことで、ベースクラスに・・・とか色々書いてたらなんかコードが多くなってきたのでこりゃー、とっとと全部書いてCPANリリースしちゃおうかな。まずCDB::Plugin::DateTimeを再実装しようっと。