NAME
Strehler::Element::Role::Maintainer - Maintainer role
DESCRIPTION
This role is used only during entity installation. It requires an install method to be implemented. Install method will be called by strehler script when used with the command initentity.
This role was introduced to collect helpers and introspective methods useful for installation.
INSTALL METHOD
strehler initentity My::Entity::Maintained
Using strehler script this way the system call the install method implemented in the entity passing as parameters the database handler defined using Dancer2 configuration and public directory. This two elements can be used to customize the enviroment as for entity requests.
HELPERS
DEPLOY_ENTITY_ON_DB
arguments: $dbh, $schema_classes
$class->deploy_entity_on_db($dbh, ['My::Entity::Schema', 'My::Entity::Multilang::Schema']);
You can use this method to add new tables to site database. Define needed tables through DBIx::Schema classes, that call the method with the database handler and an array containing class names. Tables will be added to the database.
CAVEATS
Defining classes array, order matters! If you have foreign keys ensure that the table that will be linke is already created. For example, always place main table first and multilang element second.
Writing this methos was a great pain and I had to hack a little many things. I tested it on MySQL and SQLite, but I don't know how it can behave in more exotic environments. Try it and tell me...