Commit | Line | Data |
b974984a |
1 | package DBIx::Class::DeploymentHandler; |
2 | |
3 | use Moose; |
b974984a |
4 | |
c4f4d4a2 |
5 | extends 'DBIx::Class::DeploymentHandler::Dad'; |
41219a5d |
6 | # a single with would be better, but we can't do that |
7 | # see: http://rt.cpan.org/Public/Bug/Display.html?id=46347 |
973d060d |
8 | with 'DBIx::Class::DeploymentHandler::WithSqltDeployMethod', |
4a65f60b |
9 | 'DBIx::Class::DeploymentHandler::WithMonotonicVersions', |
973d060d |
10 | 'DBIx::Class::DeploymentHandler::WithStandardVersionStorage'; |
41219a5d |
11 | with 'DBIx::Class::DeploymentHandler::WithReasonableDefaults'; |
2e68a8e1 |
12 | |
c8a2f7bd |
13 | sub prepare_version_storage_install { |
14 | my $self = shift; |
15 | |
16 | $self->prepare_resultsource_install( |
17 | $self->version_storage->version_rs->result_source |
18 | ); |
19 | } |
20 | |
21 | sub install_version_storage { |
22 | my $self = shift; |
23 | |
24 | $self->install_resultsource( |
25 | $self->version_storage->version_rs->result_source |
26 | ); |
27 | } |
28 | |
2e68a8e1 |
29 | __PACKAGE__->meta->make_immutable; |
30 | |
b974984a |
31 | 1; |
61847972 |
32 | |
33 | __END__ |
34 | |
e9c19a98 |
35 | =SYNOPSIS |
36 | |
37 | use aliased 'DBIx::Class::DeploymentHandler' => 'DH'; |
38 | my $s = My::Schema->connect(...); |
39 | |
40 | my $dh = DH->new({ |
41 | schema => $s, |
42 | databases => 'SQLite', |
43 | sqltargs => { add_drop_table => 0 }, |
44 | }); |
45 | |
46 | $dh->prepare_install; |
47 | |
48 | $dh->install; |
49 | |
50 | or for upgrades: |
51 | |
52 | use aliased 'DBIx::Class::DeploymentHandler' => 'DH'; |
53 | my $s = My::Schema->connect(...); |
54 | |
55 | my $dh = DH->new({ |
56 | schema => $s, |
57 | databases => 'SQLite', |
58 | sqltargs => { add_drop_table => 0 }, |
59 | }); |
60 | |
61 | $dh->prepare_upgrade(1, 2); |
62 | |
63 | $dh->upgrade; |
64 | |
65 | =head1 DESCRIPTION |
66 | |
67 | C<DBIx::Class::DeploymentHandler> is, as it's name suggests, a tool for |
68 | deploying and upgrading databases with L<DBIx::Class>. It is designed to be |
69 | much more flexible than L<DBIx::Class::Schema::Versioned>, hence the use of |
70 | L<Moose> and lots of roles. |
71 | |
72 | C<DBIx::Class::DeploymentHandler> itself is just a recommended set of roles |
73 | that we think will not only work well for everyone, but will also yeild the |
74 | best overall mileage. Each role it uses has it's own nuances and |
75 | documentation, so I won't describe all of them here, but here are a few of the |
76 | major benefits over how L<DBIx::Class::Schema::Versioned> worked (and |
77 | L<DBIx::Class::DeploymentHandler::Deprecated> tries to maintain compatibility |
78 | with): |
79 | |
80 | =over |
81 | |
e9c19a98 |
82 | =item * |
83 | |
84 | Downgrades in addition to upgrades. |
85 | |
86 | =item * |
87 | |
88 | Multiple sql files files per upgrade/downgrade/install. |
89 | |
90 | =item * |
91 | |
92 | Perl scripts allowed for upgrade/downgrade/install. |
93 | |
94 | =item * |
95 | |
96 | Just one set of files needed for upgrade, unlike before where one might need |
97 | to generate C<factorial(scalar @versions)>, which is just silly. |
98 | |
99 | =item * |
100 | |
101 | And much, much more! |
102 | |
103 | =back |
104 | |
105 | That's really just a taste of some of the differences. Check out each role for |
106 | all the details. |
107 | |
108 | =head1 WHERE IS ALL THE DOC?! |
109 | |
110 | C<DBIx::Class::DeploymentHandler> extends |
111 | L<DBIx::Class::DeploymentHandler::Dad>, so that's probably the first place to |
112 | look when you are trying to figure out how everything works. |
113 | |
114 | Next would be to look at all the roles that fill in the blanks that |
115 | L<DBIx::Class::DeploymentHandler::Dad> expects to be filled. They would be |
116 | L<DBIx::Class::DeploymentHandler::WithSqltDeployMethod>, |
117 | L<DBIx::Class::DeploymentHandler::WithMonotonicVersions>, |
118 | L<DBIx::Class::DeploymentHandler::WithStandardVersionStorage>, and |
119 | L<DBIx::Class::DeploymentHandler::WithReasonableDefaults>. |
120 | |
121 | =method prepare_version_storage_install |
122 | |
123 | $dh->prepare_version_storage_install |
124 | |
125 | Creates the needed C<.sql> file to install the version storage and not the rest |
126 | of the tables |
127 | |
128 | =method install_version_storage |
129 | |
130 | $dh->install_version_storage |
131 | |
132 | Install the version storage and not the rest of the tables |
133 | |
34ac0a51 |
134 | __END__ |
135 | |
2eaf903b |
136 | vim: ts=2 sw=2 expandtab |