X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=lib%2FDBIx%2FClass%2FDeploymentHandler%2FDeployMethod%2FSQL%2FTranslator.pm;h=301bdb4b471f0b803b54876007f48332146f4884;hb=93460690e9d4a399f18345d2654d5f4c35abdb46;hp=dfc0b5e7b4df499f5bee6b6b89268185ef260e09;hpb=6cae2f563d270d00170d170c415921b8004d15ff;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 dfc0b5e..301bdb4 100644 --- a/lib/DBIx/Class/DeploymentHandler/DeployMethod/SQL/Translator.pm +++ b/lib/DBIx/Class/DeploymentHandler/DeployMethod/SQL/Translator.pm @@ -25,6 +25,12 @@ use File::Spec::Functions; with 'DBIx::Class::DeploymentHandler::HandlesDeploy'; +has ignore_ddl => ( + isa => 'Bool', + is => 'ro', + default => undef, +); + has schema => ( isa => 'DBIx::Class::Schema', is => 'ro', @@ -228,15 +234,33 @@ method _run_sql_and_perl($filenames) { return $sql; } +method _deploy($version) { + if (!$self->ignore_ddl) { + return $self->_run_sql_and_perl($self->_ddl_schema_consume_filenames( + $self->storage->sqlt_type, + $version, + )); + } else { + my $sqlt = SQL::Translator->new({ + add_drop_table => 1, + parser => 'SQL::Translator::Parser::YAML', + producer => $self->storage->sqlt_type; + %{$sqltargs}, + }); + + my $yaml_filename = $self->$from_file($version); + + my @sql = $sqlt->translate($yaml_filename); + croak("Failed to translate to $db, skipping. (" . $sqlt->error . ")") + unless $sql; + } +} + sub deploy { my $self = shift; my $version = (shift @_ || {})->{version} || $self->schema_version; log_info { "deploying version $version" }; - - return $self->_run_sql_and_perl($self->_ddl_schema_consume_filenames( - $self->storage->sqlt_type, - $version, - )); + $self->_deploy($version); } sub preinstall { @@ -283,6 +307,8 @@ sub _prepare_install { my $dir = $self->script_directory; my $version = $self->schema_version; + return if $self->ignore_ddl; + my $sqlt = SQL::Translator->new({ add_drop_table => 1, parser => 'SQL::Translator::Parser::YAML', @@ -397,6 +423,8 @@ method _prepare_changegrade($from_version, $to_version, $version_set, $direction my $dir = $self->script_directory; my $sqltargs = $self->sql_translator_args; + return if $self->ignore_ddl; + my $schema_version = $self->schema_version; $sqltargs = {