X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=lib%2FDBIx%2FClass%2FDeploymentHandler%2FVersionHandler%2FMonotonic.pm;fp=lib%2FDBIx%2FClass%2FDeploymentHandler%2FVersionHandler%2FMonotonic.pm;h=6e7c7c1631eb79c0e24dc23f1bec6b7de07fb3f4;hb=dab1797def4543a19c02366b29215aeb1d27d3b4;hp=0000000000000000000000000000000000000000;hpb=5232e8d04a56e0c706c5813053caf07e739d2b7c;p=dbsrgits%2FDBIx-Class-DeploymentHandler.git diff --git a/lib/DBIx/Class/DeploymentHandler/VersionHandler/Monotonic.pm b/lib/DBIx/Class/DeploymentHandler/VersionHandler/Monotonic.pm new file mode 100644 index 0000000..6e7c7c1 --- /dev/null +++ b/lib/DBIx/Class/DeploymentHandler/VersionHandler/Monotonic.pm @@ -0,0 +1,68 @@ +package DBIx::Class::DeploymentHandler::VersionHandler::Monotonic; +use Moose; +use Carp 'croak'; + +with 'DBIx::Class::DeploymentHandler::HandlesVersioning'; + +has schema_version => ( + isa => 'Int', + is => 'ro', + required => 1, +); + +has database_version => ( + isa => 'Int', + is => 'ro', + required => 1, +); + +has to_version => ( + isa => 'Int', + is => 'ro', + lazy_build => 1, +); + +sub _build_to_version { $_[0]->schema_version } + +has _version => ( + is => 'rw', + isa => 'Int', + lazy_build => 1, +); + +sub BUILD { + croak "you are trying to upgrade and your current version is greater\n". + "than the version you are trying to upgrade to. Either downgrade\n". + "or update your schema" if $_[0]->to_version < $_[0]->_version; +} + +sub _inc_version { $_[0]->_version($_[0]->_version + 1 ) } +sub _dec_version { $_[0]->_version($_[0]->_version - 1 ) } + +sub _build__version { $_[0]->database_version } + +sub previous_version_set { + my $self = shift; + return undef + if $self->to_version == $self->_version; + + $self->_dec_version; + return [$self->_version, $self->_version + 1]; +} + +sub next_version_set { + my $self = shift; + return undef + if $self->to_version == $self->_version; + + $self->_inc_version; + return [$self->_version - 1, $self->_version]; +} + +__PACKAGE__->meta->make_immutable; + +1; + +__END__ + +vim: ts=2 sw=2 expandtab