DBIx::Skinny::InflateColumn::DateTimeで勝手にinflate/deflate #24B!

昨日に続きましてnekoyaがお送りします。

今日もSkinny関連モジュールの紹介です。DBIx::Skinny::InflateColumn::DateTimeという名前だけで何をするかだいたい理解できそうな小物モジュールとなっております。

インストールは、CPANから

cpan DBIx::Skinny::InflateColumn::DateTime

するか、githubからどうぞ。

これも昨日のSchema::Loaderと同じく、DBIx::Skinny本体のバージョンが古いと動きません。0.05以上にアップデートしておいてください。

利用方法は、Schemaクラスで

package Your::DB::Schema;
use DBIx::Skinny::Schema;
use DBIx::Skinny::InflateColumn::DateTime;

のように、useするだけです。

useすると、XXXX_at, XXXX_onなカラムが自動的にDateTimeオブジェクトにinflate/deflateされます。

実際にやっていることも、このAdvent Calenderの4日目でnekokakさんが紹介したサンプルとほぼ同等のごくシンプルなモジュールです。

と、これだけで終わると寂しいので、もう一つおまけを紹介します。

package Your::DB::Schema;
use DBIx::Skinny::Schema;
use DBIx::Skinny::InflateColumn::DateTime::Auto;

のように、DBI::Skinny::InflateColumn::DateTime::Auto(Inflate::DateTimeに同梱されています)をuseすると、insert/update時に特定のカラムに操作時刻を自動設定してくれます。

設定されるtriggerと対象カラムは以下になります。

pre_insert: created_at, created_on, updated_at, updated_on
pre_update: updated_at, updated_on

こうしたカラムの操作はDBの機能を使ってすることも可能ですが、DBに依存せずにアプリケーション側で処理したい場合は使ってみてください。

この機能は、hidekさんの

にインスパイアされて盛り込みました。hidek++

実は、4日目に紹介されたcommon_triggerの機能は、このモジュールを作るのに欲しかったので追加したという経緯があります。あなたも周辺モジュールを書いていて「本体にこんな機能が欲しい」と思ったら、パッチを送ったり、IRCやブログで話を投げてみてください。

明日はいよいよ最終日。nakokakさんの大団円エンディングにご期待ください。

have a nice skinny days!:)