Provided by: libdbix-class-deploymenthandler-perl_0.002218-1_all bug

NAME

       DBIx::Class::DeploymentHandler::DeployMethod::SQL::Translator::ScriptHelpers - CodeRef Transforms for
       common use-cases in DBICDH Migrations

SYNOPSIS

        use DBIx::Class::DeploymentHandler::DeployMethod::SQL::Translator::ScriptHelpers
          'schema_from_schema_loader';

          schema_from_schema_loader({ naming => 'v4' }, sub {
             my ($schema, $version_set) = @_;

             ...
          });

DESCRIPTION

       This package is a set of coderef transforms for common use-cases in migrations.  The subroutines are
       simply helpers for creating coderefs that will work for "PERL SCRIPTS" in
       DBIx::Class::DeploymentHandler::DeployMethod::SQL::Translator, yet have some argument other than the
       current schema that you as a user might prefer.

EXPORTED SUBROUTINES

   dbh($coderef)
        dbh(sub {
          my ($dbh, $version_set) = @_;

          ...
        });

       For those times when you almost exclusively need access to "the bare metal".  Simply gives you the
       correct database handle and the expected version set.

   schema_from_schema_loader($sl_opts, $coderef)
        schema_from_schema_loader({ naming => 'v4' }, sub {
          my ($schema, $version_set) = @_;

          ...
        });

       Any time you write a perl migration script that uses a DBIx::Class::Schema you should probably use this.
       Otherwise you'll run into problems if you remove a column from your schema yet still populate to it in an
       older population script.

       Note that $sl_opts requires that you specify something for the "naming" option.

CUSTOM SCRIPT HELPERS

       If you find that in your scripts you need to always pass the same arguments to your script helpers, you
       may want to define a custom set of script helpers.  I am not sure that there is a better way than just
       using Perl and other modules that are already installed when you install DBIx::Class::DeploymentHandler.

       The following is a pattern that will get you started; if anyone has ideas on how to make this even easier
       let me know.

        package MyApp::DBICDH::ScriptHelpers;

        use strict;
        use warnings;

        use DBIx::Class::DeploymentHandler::DeployMethod::SQL::Translator::ScriptHelpers
           dbh => { -as => '_old_dbh' },
           schema_from_schema_loader => { -as => '_old_sfsl' };

        use Sub::Exporter::Progressive -setup => {
           exports => [qw(dbh schema_from_schema_loader)],
        };

        sub dbh {
           my $coderef = shift;

           _old_dbh(sub {
              my ($dbh) = @_;
              $dbh->do(q(SET search_path TO 'myapp_db'));

              $coderef->(@_);
           });
        }

        sub schema_from_schema_loader {
           my ($config, $coderef) = @_;

           $config->{naming} ||= 'v7';

           _old_sfsl(sub {
              my ($schema) = @_;
              $schema->storage->dbh->do(q(SET search_path TO 'myapp_db'));

              $coderef->(@_);
           });

        }

       The above will default the naming to "v7" when using "schema_from_schema_loader".  And in both cases it
       will set the schema for PostgreSQL. Of course if you do that you will not be able to switch to MySQL or
       something else, so I recommended looking into my DBIx::Introspector to only do that for the database in
       question.

AUTHOR

       Arthur Axel "fREW" Schmidt <frioux+cpan@gmail.com>

COPYRIGHT AND LICENSE

       This software is copyright (c) 2015 by Arthur Axel "fREW" Schmidt.

       This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5
       programming language system itself.

perl v5.20.2                   DBIx::Class::DeploymentHandler::DeployMethod::SQL::Translator::ScriptHelpers(3pm)