]> git.donarmstrong.com Git - debbugs-presentations.git/blob - debconf14/figures/draw_dak_schema.pl
1621ef2f692ae5c58d087217d38adfc1d61999c3
[debbugs-presentations.git] / debconf14 / figures / draw_dak_schema.pl
1 #!/usr/bin/perl
2
3 use warnings;
4 use strict;
5
6 use SQL::Translator;
7 use IO::File;
8
9 my $fh = IO::File->new($ARGV[0]);
10
11 my $keep = 0;
12 my $file = '';
13 while (<$fh>) {
14     if (/CREATE\s*TABLE/i) {
15         $keep = 1;
16         $file .= $_;
17     }
18     elsif (/^\s*\);\s*$/) {
19         $file .= $_;
20         $keep = 0;
21     } elsif ($keep) {
22         $file .= $_;
23     } elsif (/CREATE\s*(UNIQUE\s*)?INDEX/i) {
24         $file .= $_;
25     }
26 }
27
28 my $trans = SQL::Translator->new(
29     parser        => 'SQL::Translator::Parser::PostgreSQL',
30     producer      => 'Diagram',
31     producer_args => {
32         out_file         => $ARGV[1],
33         show_constraints => 1,
34         show_datatypes   => 1,
35         show_sizes       => 1,
36         show_fk_only     => 0,
37     } );
38 $trans->translate(\$file);