Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

home | help
DBIx::Class::DeploymentUserlContributedePerl:Documentationtor::ScriptHelpers(3))

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.

DBIx::Class::DeploymentHandler::DeployMethod::SQL::Translator::ScriptHelpers(3)

NAME | SYNOPSIS | DESCRIPTION | EXPORTED SUBROUTINES | CUSTOM SCRIPT HELPERS | AUTHOR | COPYRIGHT AND LICENSE

Want to link to this manual page? Use this URL:
<https://www.freebsd.org/cgi/man.cgi?query=DBIx::Class::DeploymentHandler::DeployMethod::SQL::Translator::ScriptHelpers&sektion=3&manpath=FreeBSD+12.0-RELEASE+and+Ports>

home | help