X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=lib%2FDBIx%2FClass%2FDeploymentHandler%2FWithReasonableDefaults.pm;h=af38852f6164c7414d6d6f0f9947795d013302c4;hb=8d6d35e82d6a583dac11979c1a81a449c8385482;hp=74c937b8a80d30248ece6613cc2e5c72f6601c1c;hpb=4a65f60b80222596f851950728f0a115f511481c;p=dbsrgits%2FDBIx-Class-DeploymentHandler.git diff --git a/lib/DBIx/Class/DeploymentHandler/WithReasonableDefaults.pm b/lib/DBIx/Class/DeploymentHandler/WithReasonableDefaults.pm index 74c937b..af38852 100644 --- a/lib/DBIx/Class/DeploymentHandler/WithReasonableDefaults.pm +++ b/lib/DBIx/Class/DeploymentHandler/WithReasonableDefaults.pm @@ -1,17 +1,20 @@ package DBIx::Class::DeploymentHandler::WithReasonableDefaults; use Moose::Role; +# ABSTRACT: Make default arguments to a few methods sensible + requires qw( prepare_upgrade prepare_downgrade database_version schema_version ); around prepare_upgrade => sub { my $orig = shift; my $self = shift; + my $args = shift || {}; - my $from_version = shift || $self->database_version; - my $to_version = shift || $self->schema_version; - my $version_set = shift || [$from_version, $to_version]; + $args->{from_version} ||= $self->database_version; + $args->{to_version} ||= $self->schema_version; + $args->{version_set} ||= [$args->{from_version}, $args->{to_version}]; - $self->$orig($from_version, $to_version, $version_set); + $self->$orig($args); }; @@ -19,16 +22,55 @@ around prepare_downgrade => sub { my $orig = shift; my $self = shift; - my $from_version = shift || $self->database_version; - my $to_version = shift || $self->schema_version; - my $version_set = shift || [$to_version, $from_version]; + my $args = shift || {}; + + $args->{to_version} ||= $self->database_version; + $args->{from_version} ||= $self->schema_version; + $args->{version_set} ||= [$args->{from_version}, $args->{to_version}]; - $self->$orig($from_version, $to_version, $version_set); + $self->$orig($args); }; +around install_resultsource => sub { + my $orig = shift; + my $self = shift; + my $source = shift; + my $version = shift || $self->to_version; + + $self->$orig($source, $version); +}; 1; __END__ vim: ts=2 sw=2 expandtab + +=head1 CONVENIENCE + +The whole point of this role is to set defaults for arguments of various +methods. It's a little awesome. + +=head1 METHODS + +=head2 prepare_upgrade + +Defaulted args: + + my $from_version = $self->database_version; + my $to_version = $self->schema_version; + my $version_set = [$from_version, $to_version]; + +=head2 prepare_downgrade + +Defaulted args: + + my $from_version = $self->schema_version; + my $to_version = $self->data_version; + my $version_set = [$from_version, $to_version]; + +=head2 install_resultsource + +Defaulted args: + + my $version = $self->to_version;