upgrade sql should work now
[dbsrgits/DBIx-Class-DeploymentHandler.git] / lib / DBIx / Class / DeploymentHandler / DeployMethod / SQL / Translator.pm
index f9fa53c..92f54b5 100644 (file)
@@ -59,6 +59,7 @@ has databases => (
 has _filedata => (
   isa => 'ArrayRef[Str]',
   is  => 'rw',
+  default => sub { [] },
 );
 
 has txn_wrap => (
@@ -182,7 +183,7 @@ sub prepare_install {
   });
 
   my $sqlt_schema = $sqlt->translate( data => $schema )
-    or $self->throw_exception($sqlt->error);
+    or croak($sqlt->error);
 
   foreach my $db (@$databases) {
     $sqlt->reset;
@@ -200,11 +201,7 @@ sub prepare_install {
       carp("Failed to translate to $db, skipping. (" . $sqlt->error . ")");
       next;
     }
-    my $file;
-    unless( open $file, q(>), $filename ) {
-      $self->throw_exception("Can't open $filename for writing ($!)");
-      next;
-    }
+    open my $file, q(>), $filename;
     print {$file} $output;
     close $file;
   }
@@ -257,7 +254,7 @@ method _prepare_changegrade($from_version, $to_version, $version_set, $direction
 
   $sqlt->parser('SQL::Translator::Parser::DBIx::Class');
   my $sqlt_schema = $sqlt->translate( data => $schema )
-    or $self->throw_exception ($sqlt->error);
+    or croak($sqlt->error);
 
   foreach my $db (@$databases) {
     $sqlt->reset;
@@ -285,10 +282,10 @@ method _prepare_changegrade($from_version, $to_version, $version_set, $direction
       });
 
       $t->parser( $db ) # could this really throw an exception?
-        or $self->throw_exception ($t->error);
+        or croak($t->error);
 
       my $out = $t->translate( $prefilename )
-        or $self->throw_exception ($t->error);
+        or croak($t->error);
 
       $source_schema = $t->schema;
 
@@ -309,11 +306,11 @@ method _prepare_changegrade($from_version, $to_version, $version_set, $direction
       });
 
       $t->parser( $db ) # could this really throw an exception?
-        or $self->throw_exception ($t->error);
+        or croak($t->error);
 
       my $filename = $self->_ddl_schema_produce_filename($db, $to_version, $dir);
       my $out = $t->translate( $filename )
-        or $self->throw_exception ($t->error);
+        or croak($t->error);
 
       $dest_schema = $t->schema;
 
@@ -326,11 +323,7 @@ method _prepare_changegrade($from_version, $to_version, $version_set, $direction
        $dest_schema,   $db,
        $sqltargs
     );
-    my $file;
-    unless(open $file, q(>), $diff_file) {
-      $self->throw_exception("Can't write to $diff_file ($!)");
-      next;
-    }
+    open my $file, q(>), $diff_file;
     print {$file} $diff;
     close $file;
   }
@@ -339,7 +332,7 @@ method _prepare_changegrade($from_version, $to_version, $version_set, $direction
 method _read_sql_file($file) {
   return unless $file;
 
-  open my $fh, '<', $file or carp("Can't open sql file, $file ($!)");
+  open my $fh, '<', $file;
   my @data = split /;\n/, join '', <$fh>;
   close $fh;
 
@@ -363,12 +356,6 @@ sub _downgrade_single_step {
   )};
 
   for my $downgrade_file (@downgrade_files) {
-    unless (-f $downgrade_file) {
-      # croak?
-      carp "Downgrade not possible, no downgrade file found ($downgrade_file), please create one\n";
-      return;
-    }
-
     $self->_filedata($self->_read_sql_file($downgrade_file)); # I don't like this --fREW 2010-02-22
 
     my $guard = $self->schema->txn_scope_guard if $self->txn_wrap;
@@ -385,24 +372,21 @@ sub _upgrade_single_step {
     \@version_set,
   )};
 
+  my $upgrade_sql;
   for my $upgrade_file (@upgrade_files) {
-    unless (-f $upgrade_file) {
-      # croak?
-      carp "Upgrade not possible, no upgrade file found ($upgrade_file), please create one\n";
-      return;
-    }
-
-    $self->_filedata($self->_read_sql_file($upgrade_file)); # I don't like this --fREW 2010-02-22
+    my $up = $self->_read_sql_file($upgrade_file);
+    $upgrade_sql .= $up;
+    $self->_filedata($up); # I don't like this --fREW 2010-02-22
     my $guard = $self->schema->txn_scope_guard if $self->txn_wrap;
     $self->_do_upgrade;
     $guard->commit if $self->txn_wrap;
   }
+  return ['', $upgrade_sql];
 }
 
 method _do_upgrade { $self->_run_upgrade(qr/.*?/) }
 
 method _run_upgrade($stm) {
-  return unless $self->_filedata;
   my @statements = grep { $_ =~ $stm } @{$self->_filedata};
 
   for (@statements) {
@@ -417,6 +401,8 @@ method _apply_statement($statement) {
   $self->storage->dbh->do($_) or carp "SQL was: $_"
 }
 
+__PACKAGE__->meta->make_immutable;
+
 1;
 
 __END__