X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=lib%2FDBIx%2FClass%2FDeploymentHandler%2FDad.pm;h=093904eb089d9217ed5f26504b429e725b78f03e;hb=8465e76797613fa0b9c85365c03d26cacbaab31a;hp=85757a9e7cf0427285c300976ae450849511317d;hpb=91557c90ba0b3f313696c2f15dd8b56fb8358574;p=dbsrgits%2FDBIx-Class-DeploymentHandler.git diff --git a/lib/DBIx/Class/DeploymentHandler/Dad.pm b/lib/DBIx/Class/DeploymentHandler/Dad.pm index 85757a9..093904e 100644 --- a/lib/DBIx/Class/DeploymentHandler/Dad.pm +++ b/lib/DBIx/Class/DeploymentHandler/Dad.pm @@ -6,12 +6,16 @@ use Moose; use Method::Signatures::Simple; require DBIx::Class::Schema; # loaded for type constraint use Carp::Clan '^DBIx::Class::DeploymentHandler'; +use DBIx::Class::DeploymentHandler::Logger; +use Log::Contextual ':log', -default_logger => + DBIx::Class::DeploymentHandler::Logger->new({ + env_prefix => 'DBICDH' + }); has schema => ( isa => 'DBIx::Class::Schema', is => 'ro', required => 1, - handles => ['schema_version'], ); has backup_directory => ( @@ -22,12 +26,22 @@ has backup_directory => ( has to_version => ( is => 'ro', + isa => 'Str', lazy_build => 1, ); -sub _build_to_version { $_[0]->schema->schema_version } +sub _build_to_version { $_[0]->schema_version } + +has schema_version => ( + is => 'ro', + isa => 'Str', + lazy_build => 1, +); + +sub _build_schema_version { $_[0]->schema->schema_version } method install { + log_info { '[DBICDH] installing version ' . $self->to_version }; croak 'Install not possible as versions table already exists in database' if $self->version_storage_is_installed; @@ -40,9 +54,12 @@ method install { } sub upgrade { + log_info { '[DBICDH] upgrading' }; my $self = shift; while ( my $version_list = $self->next_version_set ) { - my ($ddl, $upgrade_sql) = @{$self->upgrade_single_step($version_list)||[]}; + my ($ddl, $upgrade_sql) = @{ + $self->upgrade_single_step({ version_set => $version_list }) + ||[]}; $self->add_database_version({ version => $version_list->[-1], @@ -53,16 +70,20 @@ sub upgrade { } sub downgrade { + log_info { '[DBICDH] upgrading' }; my $self = shift; while ( my $version_list = $self->previous_version_set ) { - $self->downgrade_single_step($version_list); + $self->downgrade_single_step({ version_set => $version_list }); # do we just delete a row here? I think so but not sure $self->delete_database_version({ version => $version_list->[-1] }); } } -method backup { $self->storage->backup($self->backup_directory) } +method backup { + log_info { '[DBICDH] backing up' }; + $self->storage->backup($self->backup_directory) +} __PACKAGE__->meta->make_immutable; @@ -79,6 +100,11 @@ __END__ The L (B) 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 where backups are stored