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