X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=lib%2FDBIx%2FClass%2FDeploymentHandler%2FDeployMethod%2FSQL%2FTranslator.pm;h=1082ab2a0a8ee0feb273ee46c17908d0685fe492;hb=bcc722970a94f2ba2debdeb630168bde1f8a6830;hp=5084bf8408c77c6a8ad71b0fd423da4b2a6bc075;hpb=a65184c855392d390489326e8363ffbe9a0e7fee;p=dbsrgits%2FDBIx-Class-DeploymentHandler.git diff --git a/lib/DBIx/Class/DeploymentHandler/DeployMethod/SQL/Translator.pm b/lib/DBIx/Class/DeploymentHandler/DeployMethod/SQL/Translator.pm index 5084bf8..1082ab2 100644 --- a/lib/DBIx/Class/DeploymentHandler/DeployMethod/SQL/Translator.pm +++ b/lib/DBIx/Class/DeploymentHandler/DeployMethod/SQL/Translator.pm @@ -424,12 +424,36 @@ __PACKAGE__->meta->make_immutable; 1; +# vim: ts=2 sw=2 expandtab + __END__ +=head1 DESCRIPTION + +This class is the meat of L. It takes care of +generating sql files representing schemata as well as sql files to move from +one version of a schema to the rest. One of the hallmark features of this +class is that it allows for multiple sql files for deploy and upgrade, allowing +developers to fine tune deployment. In addition it also allows for perl files +to be run at any stage of the process. + +For basic usage see L. What's +documented here is extra fun stuff or private methods. + +=head1 DIRECTORY LAYOUT + +It's heavily based upon L. + =attr schema +The L (B) that is used to talk to the database +and generate the DDL. + =attr storage +The L that is I used to talk to the database +and generate the DDL. This is automatically created with L. + =attr sqltargs #rename @@ -445,44 +469,97 @@ generate files for =attr txn_wrap +Set to true (which is the default) to wrap all upgrades and deploys in a single +transaction. + =method __ddl_consume_with_prefix + $dm->__ddl_consume_with_prefix( 'SQLite', [qw( 1.00 1.01 )], 'up' ) + +This is the meat of the multi-file upgrade/deploy stuff. It returns a list of +files in the order that they should be run for a generic "type" of upgrade. +You should not be calling this in user code. + =method _ddl_schema_consume_filenames + $dm->__ddl_schema_consume_filenames( 'SQLite', [qw( 1.00 )] ) + +Just a curried L. Get's a list of files for an +initial deploy. + =method _ddl_schema_produce_filename + $dm->__ddl_schema_produce_filename( 'SQLite', [qw( 1.00 )] ) + +Returns a single file in which an initial schema will be stored. + =method _ddl_schema_up_consume_filenames + $dm->_ddl_schema_up_consume_filenames( 'SQLite', [qw( 1.00 )] ) + +Just a curried L. Get's a list of files for an +upgrade. + =method _ddl_schema_down_consume_filenames + $dm->_ddl_schema_down_consume_filenames( 'SQLite', [qw( 1.00 )] ) + +Just a curried L. Get's a list of files for a +downgrade. + =method _ddl_schema_up_produce_filenames -=method _ddl_schema_down_produce_filenames + $dm->_ddl_schema_up_produce_filename( 'SQLite', [qw( 1.00 1.01 )] ) + +Returns a single file in which the sql to upgrade from one schema to another +will be stored. + +=method _ddl_schema_down_produce_filename + + $dm->_ddl_schema_down_produce_filename( 'SQLite', [qw( 1.00 1.01 )] ) + +Returns a single file in which the sql to downgrade from one schema to another +will be stored. =method _resultsource_install_filename + my $filename_fn = $dm->_resultsource_install_filename('User'); + $dm->$filename_fn('SQLite', '1.00') + +Returns a function which in turn returns a single filename used to install a +single resultsource. Weird interface is convenient for me. Deal with it. + =method _run_sql_and_perl -=method _prepare_install + $dm->_run_sql_and_perl([qw( list of filenames )]) -=method _prepare_changegrade +Simply put, this runs the list of files passed to it. If the file ends in +C<.sql> it runs it as sql and if it ends in C<.pl> it runs it as a perl file. -=method _read_sql_file +Depending on L all of the files run will be wrapped in a single +transaction. -=method deploy +=method _prepare_install + + $dm->_prepare_install({ add_drop_table => 0 }, sub { 'file_to_create' }) -=method install_resultsource +Generates the sql file for installing the database. First arg is simply +L args and the second is a coderef that returns the filename +to store the sql in. -=method prepare_resultsouce_install +=method _prepare_changegrade -=method prepare_install + $dm->_prepare_changegrade('1.00', '1.01', [qw( 1.00 1.01)], 'up') -=method prepare_upgrade +Generates the sql file for migrating from one schema version to another. First +arg is the version to start from, second is the version to go to, third is the +L, and last is the +direction of the changegrade, be it 'up' or 'down'. -=method prepare_downgrade +=method _read_sql_file -=method upgrade_single_step + $dm->_read_sql_file('foo.sql') -=method downgrade_single_step +Reads a sql file and returns lines in an C. Strips out comments, +transactions, and blank lines. -vim: ts=2 sw=2 expandtab