X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=lib%2FDBIx%2FClass%2FSchema%2FVersioned.pm;h=e5493ce7c2870ed1dc0f05672d10c1eca8885cf2;hb=da153fe5d87ebbede9bd350afbd33e52be2f703e;hp=0abf8bceebb34a43e7212cf438bf844422e9b733;hpb=0d865134b6803a02047846e1709ecb3989fd1c66;p=dbsrgits%2FDBIx-Class.git diff --git a/lib/DBIx/Class/Schema/Versioned.pm b/lib/DBIx/Class/Schema/Versioned.pm index 0abf8bc..e5493ce 100644 --- a/lib/DBIx/Class/Schema/Versioned.pm +++ b/lib/DBIx/Class/Schema/Versioned.pm @@ -143,27 +143,15 @@ sub backup $self->storage->backup($self->backup_directory()); } -sub _generate_db_schema -{ - my ($self) = @_; - - - - - - -} sub upgrade { my ($self) = @_; my $db_version = $self->get_db_version(); + my %driver_to_db_map = ( + 'mysql' => 'MySQL' + ); if (!$db_version) { - my %driver_to_db_map = ( - 'mysql' => 'MySQL', - 'Pg' => 'PostgreSQL', - 'Oracle' => 'Oracle' - ); my $db = $driver_to_db_map{$self->storage->dbh->{Driver}->{Name}}; unless ($db) { print "Sorry, this is an unsupported DB\n"; @@ -172,40 +160,34 @@ sub upgrade require SQL::Translator; require SQL::Translator::Diff; - my $db_tr = SQL::Translator->new({ add_drop_table => 1, parser => 'DBI', - parser_args => { - dsn => 'dbi:mysql:dbname=takkle_test', - db_user => 'newtakkle', - db_password => 'takkle123' - } + parser_args => { dbh => $self->storage->dbh } }); - $db_tr->producer($db); + $db_tr->producer($db); my $dbic_tr = SQL::Translator->new; $dbic_tr->parser('SQL::Translator::Parser::DBIx::Class'); $dbic_tr = $self->storage->configure_sqlt($dbic_tr, $db); $dbic_tr->data($self); $dbic_tr->producer($db); - $db_tr->schema->name('1'); - $dbic_tr->schema->name('2'); - + $db_tr->schema->name('db_schema'); + $dbic_tr->schema->name('dbic_schema'); # is this really necessary? foreach my $tr ($db_tr, $dbic_tr) { my $data = $tr->data; $tr->parser->($tr, $$data); } - + my $diff = SQL::Translator::Diff::schema_diff($db_tr->schema, $db, $dbic_tr->schema, $db, - { ignore_constraint_names => 1, ignore_index_names => 1, caseopt => 1 }); + { caseopt => 1 }); my $filename = $self->ddl_filename( - $self->storage->sqlt_type, + $db, $self->upgrade_directory, $self->schema_version, 'PRE', @@ -219,8 +201,16 @@ sub upgrade print $file $diff; close($file); - print "WARNING: There may be differences between your DB and your DBIC schema. Please review and if necessary run the SQL $filename to sync your DB.\n"; + # create versions table + $self->{vschema}->deploy; + + print "WARNING: There may be differences between your DB and your DBIC schema. Please review and if necessary run the SQL in $filename to sync your DB.\n"; } else { + if ($db_version eq $self->schema_version) { + print "Upgrade not necessary\n"; + return; + } + my $file = $self->ddl_filename( $self->storage->sqlt_type, $self->upgrade_directory, @@ -236,7 +226,9 @@ sub upgrade my $fh; open $fh, "<$file" or warn("Can't open upgrade file, $file ($!)"); - my @data = split(/[;\n]/, join('', <$fh>)); + my @data = split(/\n/, join('', <$fh>)); + @data = grep(!/^--/, @data); + @data = split(/;/, join('', @data)); close($fh); @data = grep { $_ && $_ !~ /^-- / } @data; @data = grep { $_ !~ /^(BEGIN TRANACTION|COMMIT)/m } @data;