> Модель для подключения DBIX::Class к MS Access Я плюнул на DBIx - они полагают, что "модель" это подмножество схемы базы данных. А если у меня множество схем, между которыми есть связи? Обычное дело для data warehouse.
Между делом обнаружил, что SQL::Abstract какой-то очень абстрактный - не знает даже про GROUP BY и знать не хочет. Разработчики DBIx его используют через хак ORDER BY.
После полугода сексуальных извращений сдался и написал Class::DBIm. Сегодня [вроде] доделал update и delete.
Что умеет -
смешанные подключения - SQLite + MySQL + XXX. Из каждого вытащит список схем, таблиц и foreign keys.
JOIN между подключениями (client-side) невозможен и пока не планируется
Если для таблиц есть описания в словаре данных - получаешь кучу бонусов. Названия колонок, связи между таблицами, списки для lookup, единицы измерения.
SELECT:
Скажи хоть что-нибудь - select, where, from, order_by, group_by. Достроит недостающее через словарь данных.
Например - если в "select" упомянуты a.b и y.z, а в словаре данных или через foreign keys можно нарыть relation между a и y, то слепит осмысленный JOIN - где INNER, где OUTER, кому надо - ON, кому можно - USING. Прямая связь a->y необязательна, достаточно иметь какую-нибудь a->c->d->f->y. Так как порядок a-y имеет смысл, то не нужно решать задачу k-MST - y-a имеет совершенно иную цель
Есть метод для указания своего JOIN, если вообще никому не веришь.
INSERT:
для тех, кто не умеет INSERT ... RETURNING, лепит транзакцию из INSERT + SELECT ... last_inserted_rowid()
UPDATE:
то же, что SELECT. Есть возможность UPDATE xxx JOIN yyy для тех DBD, кто такое умеет.
DELETE:
без фокусов
Есть Catalyst::Helper::Model::DBIm, хоть и кривоватый.
Нет ли желающих присоединиться? Тестер, контрибутор, anyone - стучитесь acca<at>cpan.org.