initial cut of deprecated bundle
[dbsrgits/DBIx-Class-DeploymentHandler.git] / lib / DBIx / Class / DeploymentHandler / VersionStorage / Deprecated / Component.pm
diff --git a/lib/DBIx/Class/DeploymentHandler/VersionStorage/Deprecated/Component.pm b/lib/DBIx/Class/DeploymentHandler/VersionStorage/Deprecated/Component.pm
new file mode 100644 (file)
index 0000000..bfd96dc
--- /dev/null
@@ -0,0 +1,37 @@
+package DBIx::Class::DeploymentHandler::VersionStorage::Deprecated::Component;
+
+use strict;
+use warnings;
+
+use Carp 'carp';
+use DBIx::Class::DeploymentHandler::VersionStorage::Deprecated::VersionResult;
+
+sub attach_version_storage {
+   $_[0]->register_class(
+      dbix_class_schema_versions => 'DBIx::Class::DeploymentHandler::VersionStorage::Deprecated::VersionResult'
+   );
+}
+
+sub connection  {
+  my $self = shift;
+  $self->next::method(@_);
+
+  $self->attach_version_storage;
+
+  my $args = $_[3] || {};
+
+  unless ( $args->{ignore_version} || $ENV{DBIC_NO_VERSION_CHECK}) {
+    my $versions = $self->resultset('dbix_class_schema_versions');
+
+    if (!$versions->version_storage_is_installed) {
+       carp "Your DB is currently unversioned. Please call upgrade on your schema to sync the DB.\n";
+    } elsif ($versions->database_version ne $self->schema_version) {
+      carp 'Versions out of sync. This is ' . $self->schema_version .
+        ', your database contains version ' . $versions->database_version . ", please call upgrade on your Schema.\n";
+    }
+  }
+
+  return $self;
+}
+
+1;