package DBIx::Class::DeploymentHandler::VersionHandler::ExplicitVersions;
-use Moose;
+use Moo;
+use MooX::Types::MooseLike::Base qw(Str ArrayRef Int HashRef);
+
+# ABSTRACT: Define your own list of versions to use for migrations
+
use Carp 'croak';
with 'DBIx::Class::DeploymentHandler::HandlesVersioning';
has schema_version => (
- isa => 'Str',
+ isa => Str,
is => 'ro',
required => 1,
);
has database_version => (
- isa => 'Str',
+ isa => Str,
is => 'ro',
required => 1,
);
has to_version => (
is => 'ro',
- lazy_build => 1,
+ isa => Str,
+ builder => '_build_to_version',
+ lazy => 1,
);
sub _build_to_version { $_[0]->schema_version }
has ordered_versions => (
is => 'ro',
- isa => 'ArrayRef',
+ isa => ArrayRef,
required => 1,
);
has _index_of_versions => (
is => 'ro',
- isa => 'HashRef',
- lazy_build => 1,
+ isa => HashRef,
+ builder => '_build__index_of_versions',
+ lazy => 1,
);
sub _build__index_of_versions {
has _version_idx => (
is => 'rw',
- isa => 'Int',
- lazy_build => 1,
+ isa => Int,
+ builder => '_build__version_idx',
+ lazy => 1,
);
sub _build__version_idx { $_[0]->_index_of_versions->{$_[0]->database_version} }
} else {
my $next_idx = $self->_dec_version_idx;
return [
- $self->ordered_versions->[$next_idx ],
$self->ordered_versions->[$next_idx + 1],
+ $self->ordered_versions->[$next_idx ],
];
}
}
-__PACKAGE__->meta->make_immutable;
-
1;
+# vim: ts=2 sw=2 expandtab
+
__END__
-vim: ts=2 sw=2 expandtab
+=head1 SEE ALSO
+
+This class is an implementation of
+L<DBIx::Class::DeploymentHandler::HandlesVersioning>. Pretty much all the
+documentation is there.