fec0e1bb60b0dc9897339555770d9dbff7a50448
[dbsrgits/DBIx-Class-DeploymentHandler.git] / lib / DBIx / Class / DeploymentHandler / Component.pm
1 package DBIx::Class::DeploymentHandler::Component;
2
3 use strict;
4 use warnings;
5
6 use Carp 'carp';
7 use DBIx::Class::DeploymentHandler::VersionResult;
8
9 sub set_us_up_the_bomb {
10         my $self = shift;
11
12         $self->register_class(
13                 __VERSION => 'DBIx::Class::DeploymentHandler::VersionResult'
14         );
15 }
16
17 sub connection  {
18   my $self = shift;
19   $self->next::method(@_);
20
21   $self->set_us_up_the_bomb;
22
23   my $args = $_[3] || {};
24
25   unless ( $args->{ignore_version} || $ENV{DBIC_NO_VERSION_CHECK}) {
26          my $versions = $self->resultset('__VERSION');
27
28          if (!$versions->is_installed) {
29                  carp "Your DB is currently unversioned. Please call upgrade on your schema to sync the DB.\n";
30          } elsif ($versions->db_version ne $self->schema_version) {
31                 carp 'Versions out of sync. This is ' . $self->schema_version .
32                   ', your database contains version ' . $versions->db_version . ", please call upgrade on your Schema.\n";
33          }
34   }
35   return $self;
36 }
37
38 1;