make Types to avoid Copy/Pasting them
[dbsrgits/DBIx-Class-DeploymentHandler.git] / lib / DBIx / Class / DeploymentHandler.pm
index 76d48e0..076d294 100644 (file)
@@ -6,25 +6,17 @@ require DBIx::Class::Schema;    # loaded for type constraint
 require DBIx::Class::ResultSet; # loaded for type constraint
 use Carp::Clan '^DBIx::Class::DeploymentHandler';
 
+use DBIx::Class::DeploymentHandler::Types;
 with 'DBIx::Class::DeploymentHandler::WithSqltDeployMethod',
      'DBIx::Class::DeploymentHandler::WithDatabaseToSchemaVersions',
      'DBIx::Class::DeploymentHandler::WithStandardVersionStorage';
 
-BEGIN {
-  use Moose::Util::TypeConstraints;
-  subtype 'DBIx::Class::DeploymentHandler::Databases'
-    => as 'ArrayRef[Str]';
-
-  coerce 'DBIx::Class::DeploymentHandler::Databases'
-    => from 'Str'
-    => via { [$_] };
-  no Moose::Util::TypeConstraints;
-}
 
 has schema => (
   isa      => 'DBIx::Class::Schema',
   is       => 'ro',
   required => 1,
+  handles => ['schema_version'],
 );
 
 has upgrade_directory => ( # configuration
@@ -42,10 +34,11 @@ has backup_directory => ( # configuration
 
 has to_version => ( # configuration
   is         => 'ro',
-  lazy_build => 1, # builder comes from another role...
-                   # which is... probably not how we want it
+  lazy_build => 1,
 );
 
+sub _build_to_version { $_[0]->schema->schema_version }
+
 has databases => ( # configuration
   coerce  => 1,
   isa     => 'DBIx::Class::DeploymentHandler::Databases',
@@ -60,20 +53,15 @@ has sqltargs => ( # configuration
 );
 
 method install {
-  carp 'Install not possible as versions table already exists in database'
+  croak 'Install not possible as versions table already exists in database'
     if $self->version_storage_is_installed;
 
-  my $new_version = $self->to_version;
+  my $ddl = $self->_deploy;
 
-  if ($new_version) {
-    $self->_deploy;
-
-    $self->add_database_version({
-      version     => $new_version,
-      # ddl         => $ddl,
-      # upgrade_sql => $upgrade_sql,
-    });
-  }
+  $self->version_storage->add_database_version({
+    version     => $self->to_version,
+    ddl         => $ddl,
+  });
 }
 
 sub upgrade {