various doc
[dbsrgits/DBIx-Class-DeploymentHandler.git] / lib / DBIx / Class / DeploymentHandler / VersionStorage / Standard / Component.pm
1 package DBIx::Class::DeploymentHandler::VersionStorage::Standard::Component;
2
3 # ABSTRACT: Attach this component to your schema to ensure you stay up to date
4
5 use strict;
6 use warnings;
7
8 use Carp 'carp';
9 use DBIx::Class::DeploymentHandler::VersionStorage::Standard::VersionResult;
10
11 sub attach_version_storage {
12    $_[0]->register_class(
13       __VERSION => 'DBIx::Class::DeploymentHandler::VersionStorage::Standard::VersionResult'
14    );
15 }
16
17 sub connection  {
18   my $self = shift;
19   $self->next::method(@_);
20
21   $self->attach_version_storage;
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->version_storage_is_installed) {
29        carp "Your DB is currently unversioned. Please call upgrade on your schema to sync the DB.\n";
30     } elsif ($versions->database_version ne $self->schema_version) {
31       carp 'Versions out of sync. This is ' . $self->schema_version .
32         ', your database contains version ' . $versions->database_version . ", please call upgrade on your Schema.\n";
33     }
34   }
35
36   return $self;
37 }
38
39 1;
40
41 # vim: ts=2 sw=2 expandtab
42
43 __END__
44