/
prep_db.pl
executable file
·63 lines (46 loc) · 1.47 KB
/
prep_db.pl
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
#!/usr/bin/env perl
use 5.12.0;
use strict;
use warnings;
use lib 'lib';
use DBIx::Class::DeploymentHandler;
use SQL::Translator;
my $schema = 'cpanvote::Schema';
my $version = eval "use $schema; $schema->VERSION" or die $@;
say "processing version $version of $schema...";
my $s = $schema->connect('dbi:SQLite:mydb.sql');
my $dh = DBIx::Class::DeploymentHandler->new( {
schema => $s,
databases => [qw/ SQLite PostgreSQL /],
sql_translator_args => { add_drop_table => 0, },
} );
say "generating deployment script";
$dh->prepare_install;
if ( $version > 0 ) {
say "generating upgrade script";
$dh->prepare_upgrade( {
from_version => $version - 1,
to_version => $version,
version_set => [ $version - 1, $version ],
} );
say "generating downgrade script";
$dh->prepare_downgrade( {
from_version => $version,
to_version => $version - 1,
version_set => [ $version, $version - 1 ],
} );
}
say "generating graph";
my $trans = SQL::Translator->new(
parser => 'SQL::Translator::Parser::DBIx::Class',
parser_args => { package => $schema },
producer => 'Diagram',
producer_args => {
out_file => 'sql/diagram-v' . $version . '.png',
show_constraints => 1,
show_datatypes => 1,
show_sizes => 1,
show_fk_only => 0,
} );
$trans->translate;
say "done";