summaryrefslogblamecommitdiff
path: root/scripts/upgrade_db.pl
blob: 00f630682c5c5409a56540c2c2aaed89a81be075 (plain) (tree)





































































                                                                         
#!/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";