1 package DBIx::Class::DeploymentHandler::VersionHandler::ExplicitVersions;
3 use Method::Signatures::Simple;
6 with 'DBIx::Class::DeploymentHandler::HandlesVersioning';
8 has ordered_versions => (
13 my $to_version = $_[0]->to_version;
14 my $db_version = $_[0]->database_version;
16 croak 'to_version not in ordered_versions'
17 unless grep { $to_version eq $_ } @{ $_[1] };
20 return if $_ eq $db_version;
21 croak 'to_version is before database version in ordered_versions'
33 method _inc_version_idx { $self->_version_idx($self->_version_idx + 1 ) }
35 method _build__version_idx {
36 my $start = $self->database_version;
38 for (@{$self->ordered_versions}) {
40 if $_ eq $self->database_version;
43 croak 'database version not found in ordered_versions!';
46 sub next_version_set { # sub instead of method because of when roles get composed
49 if $self->ordered_versions->[$self->_version_idx] eq $self->to_version;
50 my $next_idx = $self->_inc_version_idx;
51 if ( $next_idx <= $#{ $self->ordered_versions }) {
53 $self->ordered_versions->[$next_idx - 1],
54 $self->ordered_versions->[$next_idx ],
61 __PACKAGE__->meta->make_immutable;
67 vim: ts=2 sw=2 expandtab