はちゅにっき

こっちのブログはまったり更新

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 簡単に作れて面白いですね。これからもなんか気づいたら作ってみよー。