doc for ::Dad and fix a tiny bug
[dbsrgits/DBIx-Class-DeploymentHandler.git] / lib / DBIx / Class / DeploymentHandler / DeployMethod / SQL / Translator.pm
index b742588..06ec56d 100644 (file)
@@ -56,12 +56,6 @@ has databases => (
   default => sub { [qw( MySQL SQLite PostgreSQL )] },
 );
 
-has _filedata => (
-  isa => 'ArrayRef[Str]',
-  is  => 'rw',
-  default => sub { [] },
-);
-
 has txn_wrap => (
   is => 'ro',
   isa => 'Bool',
@@ -142,6 +136,7 @@ method _run_sql_and_perl($filenames) {
   my @files = @{$filenames};
   my $storage = $self->storage;
 
+
   my $guard = $self->schema->txn_scope_guard if $self->txn_wrap;
 
   my $sql;
@@ -196,12 +191,13 @@ sub deploy {
   ));
 }
 
-sub prepare_install {
+sub _prepare_install {
   my $self = shift;
+  my $sqltargs  = { %{$self->sqltargs}, %{shift @_} };
+  my $to_file   = shift;
   my $schema    = $self->schema;
   my $databases = $self->databases;
   my $dir       = $self->upgrade_directory;
-  my $sqltargs  = $self->sqltargs;
   my $version = $schema->schema_version;
 
   my $sqlt = SQL::Translator->new({
@@ -220,7 +216,7 @@ sub prepare_install {
     $sqlt->{schema} = $sqlt_schema;
     $sqlt->producer($db);
 
-    my $filename = $self->_ddl_schema_produce_filename($db, $version, $dir);
+    my $filename = $self->$to_file($db, $version, $dir);
     if (-e $filename ) {
       carp "Overwriting existing DDL file - $filename";
       unlink $filename;
@@ -237,20 +233,55 @@ sub prepare_install {
   }
 }
 
+sub _resultsource_install_filename {
+  my ($self, $source_name) = @_;
+  return sub {
+    my ($self, $type, $version) = @_;
+    my $dirname = catfile( $self->upgrade_directory, $type, 'schema', $version );
+    mkpath($dirname) unless -d $dirname;
+
+    return catfile( $dirname, "001-auto-$source_name.sql" );
+  }
+}
+
+sub install_resultsource {
+  my ($self, $source, $version) = @_;
+
+  my $rs_install_file =
+    $self->_resultsource_install_filename($source->source_name);
+
+  my $files = [
+     $self->$rs_install_file(
+      $self->storage->sqlt_type,
+      $version,
+    )
+  ];
+  $self->_run_sql_and_perl($files);
+}
+
+sub prepare_resultsource_install {
+  my $self = shift;
+  my $source = shift;
+
+  my $filename = $self->_resultsource_install_filename($source->source_name);
+  $self->_prepare_install({
+      parser_args => { sources => [$source->source_name], }
+    }, $filename);
+}
+
+sub prepare_install {
+  my $self = shift;
+  $self->_prepare_install({}, '_ddl_schema_produce_filename');
+}
+
 sub prepare_upgrade {
   my ($self, $from_version, $to_version, $version_set) = @_;
-  # for updates prepared automatically (rob's stuff)
-  # one would want to explicitly set $version_set to
-  # [$to_version]
   $self->_prepare_changegrade($from_version, $to_version, $version_set, 'up');
 }
 
 sub prepare_downgrade {
   my ($self, $from_version, $to_version, $version_set) = @_;
 
-  # for updates prepared automatically (rob's stuff)
-  # one would want to explicitly set $version_set to
-  # [$to_version]
   $self->_prepare_changegrade($from_version, $to_version, $version_set, 'down');
 }
 
@@ -368,11 +399,11 @@ method _read_sql_file($file) {
 
 sub downgrade_single_step {
   my $self = shift;
-  my @version_set = @{ shift @_ };
+  my $version_set = shift @_;
 
   my $sql = $self->_run_sql_and_perl($self->_ddl_schema_down_consume_filenames(
     $self->storage->sqlt_type,
-    \@version_set,
+    $version_set,
   ));
 
   return ['', $sql];
@@ -380,11 +411,11 @@ sub downgrade_single_step {
 
 sub upgrade_single_step {
   my $self = shift;
-  my @version_set = @{ shift @_ };
+  my $version_set = shift @_;
 
   my $sql = $self->_run_sql_and_perl($self->_ddl_schema_up_consume_filenames(
     $self->storage->sqlt_type,
-    \@version_set,
+    $version_set,
   ));
   return ['', $sql];
 }
@@ -395,4 +426,34 @@ __PACKAGE__->meta->make_immutable;
 
 __END__
 
+=attr schema
+=attr storage
+=attr sqltargs
+=attr upgrade_directory
+=attr databases
+=attr txn_wrap
+
+=method __ddl_consume_with_prefix
+=method _ddl_schema_consume_filenames
+=method _ddl_schema_produce_filename
+=method _ddl_schema_up_consume_filenames
+=method _ddl_schema_down_consume_filenames
+=method _ddl_schema_up_produce_filenames
+=method _ddl_schema_down_produce_filenames
+=method _resultsource_install_filename
+=method _run_sql_and_perl
+
+=method _prepare_install
+=method _prepare_changegrade
+=method _read_sql_file
+
+=method deploy
+=method install_resultsource
+=method prepare_resultsouce_install
+=method prepare_install
+=method prepare_upgrade
+=method prepare_downgrade
+=method upgrade_single_step
+=method downgrade_single_step
+
 vim: ts=2 sw=2 expandtab