DBIx::Skinny で update_or_create
ができたらいいなー。
と思ったので、作ってみました。
- DBIx-Skinny-Mixin-UpdateOrCreate
- http://github.com/magicalhat/p5-dbix-skinny-update_or_create
DBIx::Class だと、利用することも多いので Skinny でもあれば便利かな?と思ってみたり。
オマケとして、UPDATE じゃなくて INSERT した場合には、関連するレコードも更新しなくちゃ!
とゆーパターンも想定して、DBIx::Class でも利用できる in_storage というメソッドもつけてみました。
my $row = Proj::Model->update_or_create( table_name => { id => 1} => { name => 'magicalhat'} ); # -- insert したならば、別の処理をする unless (Proj::Model->in_storage) { my $reg = Proj::Model->create( register_table => { registered_id => $row->id} ); }
とりあえず、自分が使う分にはべんり!
Mixin 簡単に作れて面白いですね。これからもなんか気づいたら作ってみよー。