add missing newline for no-linenumber-change dzil
[dbsrgits/DBIx-Class-DeploymentHandler.git] / lib / DBIx / Class / DeploymentHandler / WithReasonableDefaults.pm
1 package DBIx::Class::DeploymentHandler::WithReasonableDefaults;
2
3 use Moose::Role;
4
5 # ABSTRACT: Make default arguments to a few methods sensible
6
7 requires qw( prepare_upgrade prepare_downgrade database_version schema_version );
8
9 around prepare_upgrade => sub {
10   my $orig = shift;
11   my $self = shift;
12   my $args = shift || {};
13
14   $args->{from_version} ||= $self->database_version;
15   $args->{to_version}   ||= $self->schema_version;
16   $args->{version_set}  ||= [$args->{from_version}, $args->{to_version}];
17
18   $self->$orig($args);
19 };
20
21
22 around prepare_downgrade => sub {
23   my $orig = shift;
24   my $self = shift;
25
26   my $args = shift || {};
27
28   $args->{to_version}   ||= $self->database_version;
29   $args->{from_version} ||= $self->schema_version;
30   $args->{version_set}  ||= [$args->{from_version}, $args->{to_version}];
31
32   $self->$orig($args);
33 };
34
35 around install_resultsource => sub {
36   my $orig = shift;
37   my $self = shift;
38   my $source = shift;
39   my $version = shift || $self->to_version;
40
41   $self->$orig($source, $version);
42 };
43
44 1;
45
46 __END__
47
48 vim: ts=2 sw=2 expandtab
49
50 =head1 CONVENIENCE
51
52 The whole point of this role is to set defaults for arguments of various
53 methods.  It's a little awesome.
54
55 =head1 METHODS
56
57 =head2 prepare_upgrade
58
59 Defaulted args:
60
61   my $from_version = $self->database_version;
62   my $to_version   = $self->schema_version;
63   my $version_set  = [$from_version, $to_version];
64
65 =head2 prepare_downgrade
66
67 Defaulted args:
68
69   my $from_version = $self->schema_version;
70   my $to_version   = $self->data_version;
71   my $version_set  = [$from_version, $to_version];
72
73 =head2 install_resultsource
74
75 Defaulted args:
76
77   my $version = $self->to_version;