X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=lib%2FDBIx%2FClass%2FDeploymentHandler%2FDeprecated.pm;h=56c99a47350b774ccf11886973af4995172bbd8b;hb=refs%2Fheads%2Fmoo-port;hp=57520cc9b59981aba1bd615be061fee33b50700c;hpb=bcc722970a94f2ba2debdeb630168bde1f8a6830;p=dbsrgits%2FDBIx-Class-DeploymentHandler.git diff --git a/lib/DBIx/Class/DeploymentHandler/Deprecated.pm b/lib/DBIx/Class/DeploymentHandler/Deprecated.pm index 57520cc..56c99a4 100644 --- a/lib/DBIx/Class/DeploymentHandler/Deprecated.pm +++ b/lib/DBIx/Class/DeploymentHandler/Deprecated.pm @@ -6,10 +6,22 @@ use Moose; use Moose::Util 'apply_all_roles'; extends 'DBIx::Class::DeploymentHandler::Dad'; +use DBIx::Class::DeploymentHandler::WithApplicatorDumple2; # a single with would be better, but we can't do that # see: http://rt.cpan.org/Public/Bug/Display.html?id=46347 -with 'DBIx::Class::DeploymentHandler::Deprecated::WithDeprecatedSqltDeployMethod', - 'DBIx::Class::DeploymentHandler::Deprecated::WithDeprecatedVersionStorage'; +with WithApplicatorDumple2( + interface_role => 'DBIx::Class::DeploymentHandler::HandlesDeploy', + class_name => 'DBIx::Class::DeploymentHandler::DeployMethod::SQL::Translator::Deprecated', + delegate_name => 'deploy_method', + attributes_to_assume => ['schema'], + attributes_to_copy => [qw( script_directory databases sql_translator_args )], + ), + WithApplicatorDumple2( + interface_role => 'DBIx::Class::DeploymentHandler::HandlesVersionStorage', + class_name => 'DBIx::Class::DeploymentHandler::VersionStorage::Deprecated', + delegate_name => 'version_storage', + attributes_to_assume => ['schema'], + ); with 'DBIx::Class::DeploymentHandler::WithReasonableDefaults'; sub BUILD { @@ -18,14 +30,27 @@ sub BUILD { if ($self->schema->can('ordered_versions') && $self->schema->ordered_versions) { apply_all_roles( $self, - 'DBIx::Class::DeploymentHandler::WithExplicitVersions' + WithApplicatorDumple2( + interface_role => 'DBIx::Class::DeploymentHandler::HandlesVersioning', + class_name => 'DBIx::Class::DeploymentHandler::VersionHandler::ExplicitVersions', + delegate_name => 'version_handler', + attributes_to_assume => [qw( database_version schema_version to_version )], + ) ); } else { apply_all_roles( $self, - 'DBIx::Class::DeploymentHandler::WithDatabaseToSchemaVersions' + WithApplicatorDumple2( + interface_role => 'DBIx::Class::DeploymentHandler::HandlesVersioning', + class_name => 'DBIx::Class::DeploymentHandler::VersionHandler::DatabaseToSchemaVersions', + delegate_name => 'version_handler', + attributes_to_assume => [qw( database_version schema_version to_version )], + ) ); } + # the following is just a hack so that ->version_storage + # won't be lazy + $self->version_storage; } __PACKAGE__->meta->make_immutable; @@ -85,12 +110,12 @@ C extends L, so that's probably the first place to look when you are trying to figure out how everything works. -Next would be to look at all the roles that fill in the blanks that +Next would be to look at all the pieces that fill in the blanks that L expects to be filled. They would be -L, -L, and +L, +L, and L. Also, this class is special in that it applies either -L or -L depending on +L or +L depending on your schema.