DBIC::Schema::Loaderを久々に使ってみる
普段からLoader使っている人には目新しい話題はない予定。
思い出すことから始めてるので。
load_from_connectionがdeprecatedになってた。
バージョン0.04000では削除されるらしいので使わないようにすべし。
ってことで、
package TestDBIC::SchemaL; use strict; use warnings; use base 'DBIx::Class::Schema::Loader'; __PACKAGE__->load_from_connection( dsn => 'dbi:mysql:test_dbic', user => 'test', password => 'testtest', relationships => 0, debug => 1, ); 1;
こうではなく、
package TestDBIC::SchemaL; use strict; use warnings; use base 'DBIx::Class::Schema::Loader'; __PACKAGE__->loader_options( relationships => 0, debug => 1, ); __PACKAGE__->connection( 'dbi:mysql:test_dbic', 'test', 'testtest' ); このように書くべし。
debugオプションを有効にすることでどのようなスキーマが
どういう形で生成されるかがまるわかりんぐ。
load_components
table
add_columns
set_primary_key
add_unique_constrint
とかとかもりもり設定してくれる。
一部抜粋
TestDBIC::SchemaL::Blog->load_components("PK::Auto", "Core"); TestDBIC::SchemaL::Blog->table("blog"); TestDBIC::SchemaL::Blog->add_columns( "id", { data_type => "INT", default_value => undef, is_nullable => 0, size => 10 }, "rid", { data_type => "VARCHAR", default_value => "", is_nullable => 0, size => 10 }, "member_id", { data_type => "INT", default_value => 0, is_nullable => 0, size => 10 }, "title", { data_type => "TEXT", default_value => "", is_nullable => 0, size => 65_535 }, "created_on", { data_type => "DATETIME", default_value => "0000-00-00 00:00:00", is_nullable => 0, size => 19, }, "timestamp", { data_type => "TIMESTAMP", default_value => "CURRENT_TIMESTAMP", is_nullable => 1, size => 14, }, ); TestDBIC::SchemaL::Blog->set_primary_key("id"); TestDBIC::SchemaL::Blog->add_unique_constraint("rid", ["rid"]);
GJGJ。
ちなむと、
MySQLの場合だとInnoDBとかで外部キーをはっていなければ
relationshipsオプションは意味ないね。
まあ、当然ですが。
で、ちこちこ試してて、
MoFedge::Data::DBIC::Schema::Loader完成
とりあえず動く。
次のエントリで晒す。