MoFedge::Data::DBIC::Schemaの解説してみますかね

MoFedge::Data::DBIC::SchemaってのがMFのラボで公開されてるのですが、
http://code.mfac.jp/trac/browser/MoFedge-Data-DBIC-Schema/
いまいち分からないらしい。

DBIx::Class::Schema::Loaderとなにがどう違うのかとかとか。

まあ、基本DBIx::Class::Schema::Loader
http://search.cpan.org/dist/DBIx-Class-Schema-Loader/
これを使っとけばいいんじゃないでしょうか。
終わり(マテ


MoFedge::Data::DBIC::Schemaって何をヤッテクレル人なのかを
かるーく書いてみようと思う。

  • load_componentsを書くところを1箇所にするためのもの。
  • MFのテーブル構造に沿ったリレーションを自動で貼ってくれるもの
    • has_manyとbelongs_toのみ
  • idというカラムがある場合それを自動でset_primary_keyする
  • idというカラムがある場合resultset_attributesを使って自動でorder_by => 'me.id DESC'を設定する
  • ridというカラムがある場合それを自動でadd_unique_constraintに設定する
  • created_onというカラムがある場合自動でMoFedge::Data::DBIC::AutoInflateDateTime::datetime_columnを使ってinflateとdeflateを設定
  • updated_onというカラムがある場合自動でMoFedge::Data::DBIC::AutoInflateDateTime::datetime_columnを使ってinflateとdeflateを設定
  • *_onというカラムがある場合自動でMoFedge::Data::DBIC::AutoInflateDateTime::date_columnを使ってinflateとdeflateを設定
  • *_atというカラムがある場合自動でMoFedge::Data::DBIC::AutoInflateDateTime::datetime_columnを使ってinflateとdeflateを設定
  • プロジェクト用のDateTimeを作る

大枠こんな感じです。

  • MFのテーブル構造に沿ったリレーションを自動で貼ってくれるもの

これについては以下のような感じです。

テーブル構造


table: blogger
column:
- id
- rid
- name

table: blog
column:
- id
- rid
- blogger_id
- name

こんなテーブルがあった場合、MoFedgeでは

blogger->has_many('blogs', 'Blog', 'blogger_id');
blog->belongs_to(blogger_id => 'Blogger');

て、感じにリレーション張ります。

many-to-manyとかhas_oneとかとかが必要な場合はそれだけ手動。
DBIx::Class::Schema::Loaderではテーブル名とかカラム名
自動でやってくれてますが、それはMoFegeでは現在手動です。
これも何とかする予定ってかLoaderと連携させる予定。
うひ。

大体こんなの。
まあ、どういうことをやってるかはこれでわかるのではないかと思いますが。
わからないかもしれないですね(マテ

次回を待て!(あるのか?