Allow user to specify version of schema to install
[dbsrgits/DBIx-Class-DeploymentHandler.git] / lib / DBIx / Class / DeploymentHandler / Dad.pm
index 1fb3520..569a9f7 100644 (file)
@@ -3,7 +3,6 @@ package DBIx::Class::DeploymentHandler::Dad;
 # ABSTRACT: Parent class for DeploymentHandlers
 
 use Moose;
-use Method::Signatures::Simple;
 require DBIx::Class::Schema;    # loaded for type constraint
 use Carp::Clan '^DBIx::Class::DeploymentHandler';
 use DBIx::Class::DeploymentHandler::Logger;
@@ -41,12 +40,15 @@ has schema_version => (
 
 sub _build_schema_version { $_[0]->schema->schema_version }
 
-method install {
-  log_info { 'installing version ' . $self->to_version };
+sub install {
+  my $self = shift;
+
+  my $version = (shift @_ || {})->{version} || $self->to_version;
+  log_info { "installing version $version" };
   croak 'Install not possible as versions table already exists in database'
     if $self->version_storage_is_installed;
 
-  my $ddl = $self->deploy;
+  my $ddl = $self->deploy({ version=> $version });
 
   $self->add_database_version({
     version     => $self->to_version,
@@ -88,9 +90,10 @@ sub downgrade {
   log_warn { 'no version to run downgrade' } unless $ran_once;
 }
 
-method backup {
+sub backup {
+  my $self = shift;
   log_info { 'backing up' };
-  $self->storage->backup($self->backup_directory)
+  $self->schema->storage->backup($self->backup_directory)
 }
 
 __PACKAGE__->meta->make_immutable;
@@ -125,8 +128,12 @@ The version (defaults to schema's version) to migrate the database to
 
  $dh->install
 
-Deploys the current schema into the database.  Populates C<version_storage> with
-C<version> and C<ddl>.
+or
+
+ $dh->install({ version => 1 })
+
+Deploys the requested version into the database  Version defaults to
+L</schema_version>.  Populates C<version_storage> with C<version> and C<ddl>.
 
 B<Note>: you typically need to call C<< $dh->prepare_deploy >> before you call
 this method.