9 июн. 2009 г.

Генерация классов для DBIx::Class

При создании приложения на Catalyst'е с бэкэндом DBIx::Class можно воспользоваться хэлпером самого каталиста:

$ script/myapp_create.pl model MyAppDB DBIC::Schema MyAppDB \
dbi:SQLite:myapp.db '' '' '{ AutoCommit => 1 }'

См. тут.

Этот способ хорош, если база данных создана давно и почти не меняется. Но если база большая, сложная и в неё часто добавляются новые схемы, то перестраивать заново все классы для всех таблиц, мягко говоря, неразумно. С другой стороны, далеко не все драйвера БД поддерживают работу со схемами (DBD::Pg, например, не поддерживает), и для таких баз генерируются классы только для главной схемы.

Чтобы сгенерировать класс для какой-то отдельной схемы, нужно в консоли ввести команду:

perl -MDBIx::Class::Schema::Loader=make_schema_at,dump_to_dir:./lib -e \
'make_schema_at("MyApp::MyAppSchema::DBSchema", { debug => 1, db_schema => "dbschema" }, \
[ "dbi:Pg:dbname=dbname","user","password", { AutoCommit => 1 } ])'


Эта команда создаст классы для таблиц из схемы базы данных dbschema в директории ./lib/MyApp/MyAppSchema/DBSchema/, а так же класс схемы ./lib/MyApp/MyAppSchema.pm, в котором пропишет доступ к базе PostgreSQL dbname для пользователя user с паролем password и отключит транзакции.

Выделенные фрагменты нужно заменить на реальные данные.

Комментариев нет:

Отправить комментарий