Make ignore_ddl test fail
[dbsrgits/DBIx-Class-DeploymentHandler.git] / lib / DBIx / Class / DeploymentHandler / DeployMethod / SQL / Translator.pm
index c9f68cb..301bdb4 100644 (file)
@@ -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',
@@ -358,7 +384,7 @@ sub prepare_resultsource_install {
 
   my $install_filename = $self->_resultsource_install_filename($source->source_name);
   my $proto_filename = $self->_resultsource_protoschema_filename($source->source_name);
-  $self->_generate_protoschema({
+  $self->prepare_protoschema({
       parser_args => { sources => [$source->source_name], }
   }, $proto_filename);
   $self->_prepare_install({}, $proto_filename, $install_filename);
@@ -367,7 +393,7 @@ sub prepare_resultsource_install {
 sub prepare_deploy {
   log_info { 'preparing deploy' };
   my $self = shift;
-  $self->_generate_protoschema({}, '_ddl_protoschema_produce_filename');
+  $self->prepare_protoschema({}, '_ddl_protoschema_produce_filename');
   $self->_prepare_install({}, '_ddl_protoschema_produce_filename', '_ddl_schema_produce_filename');
 }
 
@@ -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 = {
@@ -515,7 +543,7 @@ sub upgrade_single_step {
   return ['', $sql];
 }
 
-sub _generate_protoschema {
+sub prepare_protoschema {
   my $self      = shift;
   my $sqltargs  = { %{$self->sql_translator_args}, %{shift @_} };
   my $to_file   = shift;