DBIx::Skinny::InflateColumn::DateTimeで勝手にinflate/deflate #24
昨日に続きまして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!:)