Catalystでwrapするコアモジュールをつくる
前回「古いCGIをモダンにCatalystへ移植してみる」の続き。
catalyst.pl MyApp .. cd MyApp perl Makefile.PL make && make test
ここまでやった後、古いCGIを読み解く必要があったのでしばらく放置。
判明したこと
データをDBI経由へと変更してみる
テキストデータの分量もそこそこありながら、特定のデータのみを参照する手段が存在しないため。検索機能の追加も見込んでの変更を行ってみる。
Catalystだとモジュールのテストが難しいため、コアのライブラリを作成してそれをテストすることに。
module-setup CoreApp
cd CoreApp
csvの定義をcgi内部にて見つけたので、それをもとにテーブル定義を作成する。
mkdir -p lib/CoreApp/DB/Result/ mkdir lib/CoreApp/DB/ResultSet/
- CoreApp::DB
package CoreApp::DB; use warnings; use strict; use base qw/DBIx::Class::Schema/; __PACKAGE__->load_namespaces(); 1;
- CoreApp::DB::Result::CSV.pm
package CoreApp::DB::Result::CSV; use strict; use warnings; use base 'DBIx::Class'; __PACKAGE__->load_components(qw/PK::Auto Core/); __PACKAGE__->table('table_sample'); __PACKAGE__->add_unique_constraint( [qw/title/] ); __PACKAGE__->add_columns( "id", { data_type => "INT", default_value => undef, is_nullable => 0, is_auto_increment => 1, size => 11, }, "title", { data_type => "INT", default_value => 0, } "state", { data_type => "INT", default_value => 0, } } __PACKAGE__->set_primary_key(qw/id title/); 1; __END__
- CoreApp::DB::ResultSet::CSV.pm
package CoreApp::DB::ResultSet::CSV; use strict; use warnings; use base qw/DBIx::Class::ResultSet/; 1;
Makefile.PLへの追記
requires 'DBIx::Class' => '0.08112';
t/00_compile.tへの追記
BEGIN { use_ok 'CoreApp::DB' } BEGIN { use_ok 'CoreApp::DB::Result::CSV' } BEGIN { use_ok 'CoreApp::DB::ResultSet::CSV' }