package DBIx::Class::DeploymentHandler::Dad;
+# ABSTRACT: Parent class for DeploymentHandlers
+
use Moose;
use Method::Signatures::Simple;
require DBIx::Class::Schema; # loaded for type constraint
isa => 'DBIx::Class::Schema',
is => 'ro',
required => 1,
- handles => ['schema_version'],
);
has backup_directory => (
lazy_build => 1,
);
-sub _build_to_version { $_[0]->schema->schema_version }
+sub _build_to_version { $_[0]->schema_version }
+
+has schema_version => (
+ is => 'ro',
+ lazy_build => 1,
+);
+
+sub _build_schema_version { $_[0]->schema->schema_version }
method install {
croak 'Install not possible as versions table already exists in database'
1;
+# vim: ts=2 sw=2 expandtab
+
+__END__
+
=pod
=attr schema
The L<DBIx::Class::Schema> (B<required>) that is used to talk to the database
and generate the DDL.
+=attr schema_version
+
+The version that the schema is currently at. Defaults to
+C<< $self->schema->schema_version >>.
+
=attr backup_directory
-The directory that backups are stored in
+The directory where backups are stored
=attr to_version
Deploys the current schema into the database. Populates C<version_storage> with
C<version> and C<ddl>.
-B<Note>: you typically need to call C<< $dh->prepare_install >> before you call
+B<Note>: you typically need to call C<< $dh->prepare_deploy >> before you call
this method.
B<Note>: you cannot install on top of an already installed database
$dh->downgrade
Downgrades the database one step at a time till L</previous_version_set>
-returns C<undef>. Each downgrade step will delete a C<version>from the
+returns C<undef>. Each downgrade step will delete a C<version> from the
version storage.
=method backup
other subclasses (or more likely, tools made to use another subclass), you
should probably implement these too, even if they are no-ops.
-The methods are:
-
=head2 database_version
see L<DBIx::Class::DeploymentHandler::HandlesVersionStorage/database_version>
-=head2 prepare_install
+=head2 prepare_deploy
-see L<DBIx::Class::DeploymentHandler::HandlesDeploy/prepare_install>
+see L<DBIx::Class::DeploymentHandler::HandlesDeploy/prepare_deploy>
=head2 prepare_resultsource_install
-see L<DBIx::Class::DeploymentHandler::HandlesDeploy/prepare_resultsouce_install>
+see L<DBIx::Class::DeploymentHandler::HandlesDeploy/prepare_resultsource_install>
=head2 install_resultsource
see L<DBIx::Class::DeploymentHandler::HandlesDeploy/prepare_downgrade>
-=back
+=head2 SUBCLASSING
+All of the methods mentioned in L</METHODS THAT ARE REQUIRED IN SUBCLASSES> and
+L</ORTHODOX METHODS> can be implemented in any fashion you choose. In the
+spirit of code reuse I have used roles to implement them in my two subclasses,
+L<DBIx::Class::DeploymentHandler> and
+L<DBIx::Class::DeploymentHandler::Deprecated>, but you are free to implement
+them entirely in a subclass if you so choose to.
-__END__
+For in-depth documentation on how methods are supposed to work, see the roles
+L<DBIx::Class::DeploymentHandler::HandlesDeploy>,
+L<DBIx::Class::DeploymentHandler::HandlesVersioning>, and
+L<DBIx::Class::DeploymentHandler::HandlesVersionStorage>.
-vim: ts=2 sw=2 expandtab