概要
第一回で見たようにPluginはTengクラスにメソッドを生やすものなので、どんなメソッドが生えるか見る。
Teng::Plugin::BulkInsert
複数列を同時に投入する bulk_insert を提供。Kohadaから持ってきた処理ぽい。MySQLか否かで処理が分かれていて、MySQLだとSQL::Makerの InsertMulti プラグインを用いて1文で複数行をinsertする。その他のDBの場合はひたすらinsert。TRIGERに関するコメントが入っているが、多分昔の名残。
Teng::Plugin::Count
カウントするcountを提供。SQL::Makerでカウント文を作って流すだけ。
Teng::Plugin::FindOrCreate
find_or_create を提供。single して insert しているだけ。insert後のrefetch は冗長な気も?
Teng::Plugin::Pager、Teng::Plugin::Pager::MySQLFoundRows
ページャを意識した検索をする search_with_pager を提供。引数で指定したページに含まれるべき物件のみをLIMITで検索した結果リストと、 Data::Page::NoTotalEntries を返す。その割にはNoTotalEntries->first と NoTotalEntries->last は使ってなくて、ちょっと違和感がある。search 使えるんじゃないかって気もするけど、それも使ってなくて自前でSQL::Makerを使っている。
Teng::Plugin::Pager::MySQLFoundRows でも同じメソッドを実装しているが、こちらはData::Pageを返す。つまり、全行数も算出して返す。全行の算出には SQL_CALC_FOUND_ROWS を使うため、MySQL専用のプラグインとなっている。
Teng::Plugin::Replace
REPLACE INTO なSQLを実行するreplace を提供する。insertメソッド と同じ流れでREPLACE INTO にした感じなんだけど、差異があるのはその後の変更についていけてないせい?