From d769fb38e0acab6b3ff6c43652a5fc422acafb55 Mon Sep 17 00:00:00 2001 From: franck cuny Date: Mon, 24 Jan 2011 21:31:16 +0100 Subject: script to migrate/upgrade dbix schema --- scripts/upgrade_db.pl | 70 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 70 insertions(+) create mode 100755 scripts/upgrade_db.pl (limited to 'scripts/upgrade_db.pl') diff --git a/scripts/upgrade_db.pl b/scripts/upgrade_db.pl new file mode 100755 index 0000000..00f6306 --- /dev/null +++ b/scripts/upgrade_db.pl @@ -0,0 +1,70 @@ +#!/usr/bin/env perl +use strict; +use warnings; + +use lib 'lib'; + +use YAML::Syck; +use DBIx::Class::DeploymentHandler; +use SQL::Translator; + +my $config = shift; +die "need configuration file" unless $config; + +my $schema = 'jitterbug::Schema'; + +my $version = eval "use $schema; $schema->VERSION" or die $@; + +print "processing version $version of $schema...\n"; + +my $jitterbug_conf = LoadFile($config); +my $dbix_conf = $jitterbug_conf->{plugins}->{DBIC}->{schema}; +my $s = $schema->connect( @{ $dbix_conf->{connect_info} } ); + +my $dh = DBIx::Class::DeploymentHandler->new( + { + schema => $s, + databases => [qw/ SQLite PostgreSQL MySQL /], + sql_translator_args => { add_drop_table => 0, }, + } +); + +print "generating deployment script\n"; +$dh->prepare_install; + +if ( $version > 1 ) { + print "generating upgrade script\n"; + $dh->prepare_upgrade( + { + from_version => $version - 1, + to_version => $version, + version_set => [ $version - 1, $version ], + } + ); + + print "generating downgrade script\n"; + $dh->prepare_downgrade( + { + from_version => $version, + to_version => $version - 1, + version_set => [ $version, $version - 1 ], + } + ); +} + +# print "generating graph\n"; + +# my $trans = SQL::Translator->new( +# parser => 'SQL::Translator::Parser::DBIx::Class', +# parser_args => { package => $schema }, +# producer_args => { +# show_constraints => 1, +# show_datatypes => 1, +# show_sizes => 1, +# show_fk_only => 0, +# } +# ); + +# $trans->translate; + +print "done\n"; -- cgit 1.4.1