default => sub { [qw( MySQL SQLite PostgreSQL )] },
);
-has _filedata => (
- isa => 'ArrayRef[Str]',
- is => 'rw',
- default => sub { [] },
-);
-
has txn_wrap => (
is => 'ro',
isa => 'Bool',
my @files = @{$filenames};
my $storage = $self->storage;
+
my $guard = $self->schema->txn_scope_guard if $self->txn_wrap;
my $sql;
));
}
-sub prepare_install {
+sub _prepare_install {
my $self = shift;
+ my $sqltargs = { %{$self->sqltargs}, %{shift @_} };
+ my $to_file = shift;
my $schema = $self->schema;
my $databases = $self->databases;
my $dir = $self->upgrade_directory;
- my $sqltargs = $self->sqltargs;
my $version = $schema->schema_version;
my $sqlt = SQL::Translator->new({
$sqlt->{schema} = $sqlt_schema;
$sqlt->producer($db);
- my $filename = $self->_ddl_schema_produce_filename($db, $version, $dir);
+ my $filename = $self->$to_file($db, $version, $dir);
if (-e $filename ) {
carp "Overwriting existing DDL file - $filename";
unlink $filename;
}
}
+sub _resultsource_install_filename {
+ my ($self, $source_name) = @_;
+ return sub {
+ my ($self, $type, $version) = @_;
+ my $dirname = catfile( $self->upgrade_directory, $type, 'schema', $version );
+ mkpath($dirname) unless -d $dirname;
+
+ return catfile( $dirname, "001-auto-$source_name.sql" );
+ }
+}
+
+sub install_resultsource {
+ my ($self, $source, $version) = @_;
+
+ my $rs_install_file =
+ $self->_resultsource_install_filename($source->source_name);
+
+ my $files = [
+ $self->$rs_install_file(
+ $self->storage->sqlt_type,
+ $version,
+ )
+ ];
+ $self->_run_sql_and_perl($files);
+}
+
+sub prepare_resultsource_install {
+ my $self = shift;
+ my $source = shift;
+
+ my $filename = $self->_resultsource_install_filename($source->source_name);
+ $self->_prepare_install({
+ parser_args => { sources => [$source->source_name], }
+ }, $filename);
+}
+
+sub prepare_install {
+ my $self = shift;
+ $self->_prepare_install({}, '_ddl_schema_produce_filename');
+}
+
sub prepare_upgrade {
my ($self, $from_version, $to_version, $version_set) = @_;
- # for updates prepared automatically (rob's stuff)
- # one would want to explicitly set $version_set to
- # [$to_version]
$self->_prepare_changegrade($from_version, $to_version, $version_set, 'up');
}
sub prepare_downgrade {
my ($self, $from_version, $to_version, $version_set) = @_;
- # for updates prepared automatically (rob's stuff)
- # one would want to explicitly set $version_set to
- # [$to_version]
$self->_prepare_changegrade($from_version, $to_version, $version_set, 'down');
}
sub downgrade_single_step {
my $self = shift;
- my @version_set = @{ shift @_ };
+ my $version_set = shift @_;
my $sql = $self->_run_sql_and_perl($self->_ddl_schema_down_consume_filenames(
$self->storage->sqlt_type,
- \@version_set,
+ $version_set,
));
return ['', $sql];
sub upgrade_single_step {
my $self = shift;
- my @version_set = @{ shift @_ };
+ my $version_set = shift @_;
my $sql = $self->_run_sql_and_perl($self->_ddl_schema_up_consume_filenames(
$self->storage->sqlt_type,
- \@version_set,
+ $version_set,
));
return ['', $sql];
}
__END__
+=attr schema
+=attr storage
+=attr sqltargs
+=attr upgrade_directory
+=attr databases
+=attr txn_wrap
+
+=method __ddl_consume_with_prefix
+=method _ddl_schema_consume_filenames
+=method _ddl_schema_produce_filename
+=method _ddl_schema_up_consume_filenames
+=method _ddl_schema_down_consume_filenames
+=method _ddl_schema_up_produce_filenames
+=method _ddl_schema_down_produce_filenames
+=method _resultsource_install_filename
+=method _run_sql_and_perl
+
+=method _prepare_install
+=method _prepare_changegrade
+=method _read_sql_file
+
+=method deploy
+=method install_resultsource
+=method prepare_resultsouce_install
+=method prepare_install
+=method prepare_upgrade
+=method prepare_downgrade
+=method upgrade_single_step
+=method downgrade_single_step
+
vim: ts=2 sw=2 expandtab