2f1c9136ea34a4e9fef99b9985db5ad124d01e89
[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
12   my $from_version = shift || $self->database_version;
13   my $to_version   = shift || $self->schema_version;
14   my $version_set  = shift || [$from_version, $to_version];
15
16   $self->$orig($from_version, $to_version, $version_set);
17 };
18
19
20 around prepare_downgrade => sub {
21   my $orig = shift;
22   my $self = shift;
23
24   my $from_version = shift || $self->database_version;
25   my $to_version   = shift || $self->schema_version;
26   my $version_set  = shift || [$to_version, $from_version];
27
28   $self->$orig($from_version, $to_version, $version_set);
29 };
30
31 around install_resultsource => sub {
32   my $orig = shift;
33   my $self = shift;
34   my $source = shift;
35   my $version = shift || $self->to_version;
36
37   $self->$orig($source, $version);
38 };
39
40 1;
41
42 __END__
43
44 vim: ts=2 sw=2 expandtab
45
46 =head1 CONVENIENCE
47
48 The whole point of this role is to set defaults for arguments of various
49 methods.  It's a little awesome.
50
51 =head1 METHODS
52
53 =head2 prepare_upgrade
54
55 Defaulted args:
56
57   my $from_version = $self->database_version;
58   my $to_version   = $self->schema_version;
59   my $version_set  = [$from_version, $to_version];
60
61 =head2 prepare_downgrade
62
63 Defaulted args:
64
65   my $from_version = $self->database_version;
66   my $to_version   = $self->schema_version;
67   my $version_set  = [$from_version, $to_version];
68
69 =head2 install_resultsource
70
71 Defaulted args:
72
73   my $version = $self->to_version;