それぞれ 5,000 万を超えるエントリを持つ複数の (〜 100 および数え切れないほどの) MySQL テーブルがあります。問題は、このすべてのテーブルがまったく同じ構造を持っており、DBIx::class で単一の結果クラスを作成したいということです。たとえば、次の構造の一連のテーブルを考えてみましょう。
CREATE TABLE users_table_1 (
name TINYTEXT,
username TINYTEXT
);
CREATE TABLE users_table_2 (
name TINYTEXT,
username TINYTEXT
);
...
テーブルごとに結果クラスを作成しなくても、次のことができるようにしたいと考えています。
my $users_1_rs = $schema->resultset('User_table_1');
my $users_2_rs = $schema->resultset('User_table_2');
...
私は DBIx::Class を初めて使用しますが、思いつくことができる解決策は次の 2 つだけです。
- テーブルごとに、DBIx::Class::DynamicSubclassのようなものを使用して、すべての共通機能を備えたベース結果クラスからサブクラス化します。欠点は、この方法では、テーブルごとにクラスを (小さいものではありますが) 作成する必要があることです。
- DBIx ::Class::Loaderを使用して、データベース自体から自動的にクラスを作成します。ただし、このソリューションが私のニーズに対して非常にエレガントで堅牢であるとは思いません。
誰かがこの問題のよりエレガントな解決策を教えてくれますか?