The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
# $Id: Stats.pm,v 1.3 2003/09/28 08:09:31 clajac Exp $

package CPANXR::Apache::Stats;
use CPANXR::Database;
use strict;

sub stats {
  my ($self, $r, $q) = @_;

  my $Dbh = CPANXR::Database->connection();

  $r->print("<b>Statistics</b><br>\n");
  $r->print("<blockquote>\n");
  # Get indexed files
  {
    my @types = (".xs", ".pm");

    my $result = $Dbh->selectall_arrayref("SELECT type, count(*), sum(loc) FROM files GROUP BY type");
    $r->print("<b>File information:</b><br>\n");
    $r->print("<pre>\n");

    my $sum = 0;
    my $loc = 0;

    $r->print("Type        Count        LOC\n");
    $r->print(("-" x 28) . "\n");
    foreach(@$result) {
      $r->print(sprintf("%s      % 8d   % 8d\n", $types[$_->[0] - 1], $_->[1], $_->[2]));
      $sum += $_->[1];
      $loc += $_->[2];
    }
    $r->print(("-" x 28) . "\n");
    $r->print(sprintf("Sum:     % 8d   % 8d\n", $sum, $loc));
    $r->print("</pre><br><br>\n");
  }

  # Symbols and connections
  {
    $r->print("<b>Reference information:</b><br>\n");
    $r->print("<pre>\n");
    
    $r->print("Type                   Count\n");
    $r->print(("-" x 28) . "\n");

    {
      my $decl = $Dbh->selectall_arrayref("SELECT count(*) FROM declarations");
      my $sym  = $Dbh->selectall_arrayref("SELECT count(id) FROM symbols");
      my $pkg  = $Dbh->selectall_arrayref("SELECT count(distinct symbol_id) FROM packages");
      my $conn = $Dbh->selectall_arrayref("SELECT count(*) FROM connections");
      $r->print(sprintf("Barewords           % 8d\n", $sym->[0]->[0]));
      $r->print(sprintf("Packages            % 8d\n", $pkg->[0]->[0]));
      $r->print(sprintf("Declarations        % 8d\n", $decl->[0]->[0]));
      $r->print(sprintf("Connections         % 8d\n", $conn->[0]->[0]));
    }
  }
}

1;