LP#1971745 - speed up open-ils.storage.action.live_holds.wide_hash
[working/Evergreen.git] / Open-ILS / src / reporter / find_orphaned_reports.pl
1 #!/usr/bin/perl -w
2
3 use DBI;
4 use Getopt::Long;
5 use OpenSRF::EX qw/:try/;
6 use OpenSRF::Utils qw/:daemon/;
7 use OpenSRF::System;
8 use OpenSRF::AppSession;
9 use OpenSRF::Utils::SettingsClient;
10 use File::Find;
11
12 my ($config, $du, $live, %seen) = ('SYSCONFDIR/opensrf_core.xml', 0, 0);
13
14 GetOptions(
15         "bootstrap=s"   => \$config,
16         "du"    => \$du,
17         "live"  => \$live,
18 );
19
20 OpenSRF::System->bootstrap_client( config_file => $config );
21
22 my $sc = OpenSRF::Utils::SettingsClient->new;
23 my $db_driver = $sc->config_value( reporter => setup => database => 'driver' );
24 my $db_host = $sc->config_value( reporter => setup => database => 'host' );
25 my $db_port = $sc->config_value( reporter => setup => database => 'port' );
26 my $db_name = $sc->config_value( reporter => setup => database => 'db' ) || $sc->config_value( reporter => setup => database => 'name' );
27 my $db_user = $sc->config_value( reporter => setup => database => 'user' );
28 my $db_pw = $sc->config_value( reporter => setup => database => 'pw' ) || $sc->config_value( reporter => setup => database => 'password' );
29
30 my $output_base = $sc->config_value( reporter => setup => files => 'output_base' );
31
32 my $dsn = "dbi:" . $db_driver . ":dbname=" . $db_name .';host=' . $db_host . ';port=' . $db_port;
33
34 my $dbh = DBI->connect($dsn,$db_user,$db_pw, {pg_enable_utf8 => 1, RaiseError => 1});
35
36 find(\&wanted, $output_base);
37
38 $dbh->disconnect;
39
40
41 sub wanted {
42         my $dir = $File::Find::dir;
43         $dir =~ s/^$output_base//;
44         $dir =~ s#^/+##;
45         $dir =~ s#/+$##;
46         my @list = split '/', $dir;
47         return unless @list == 3;
48         return if $seen{$list[2]};
49         $seen{$list[2]} = 1;
50
51         if ($dbh->selectrow_array("SELECT id FROM reporter.schedule WHERE id = $list[2];")) {
52                 print STDERR "$output_base/" . join('/', @list) . ( $du ? "\0" : "\n" ) if ($live);
53         } else {
54                 print "$output_base/" . join('/', @list) . ( $du ? "\0" : "\n" );
55         }
56
57         if ($dbh->selectrow_array("SELECT id FROM reporter.report WHERE id = $list[1];")) {
58                 print STDERR "$output_base/" . join('/', @list[0,1]) . ( $du ? "\0" : "\n" ) if ($live);
59         } else {
60                 print "$output_base/" . join('/', @list[0,1]) . ( $du ? "\0" : "\n" );
61         }
62
63         if ($dbh->selectrow_array("SELECT id FROM reporter.template WHERE id = $list[0];")) {
64                 print STDERR "$output_base/" . $list[0] . ( $du ? "\0" : "\n" ) if ($live);
65         } else {
66                 print "$output_base/" . $list[0] . ( $du ? "\0" : "\n" );
67         }
68 }
69
70