Annotation of db/prgsrc/updateindex.pl, revision 1.2

1.1       boris       1: #!/usr/local/bin/perl -w
                      2: 
                      3: =head1 NAME
                      4: 
                      5: updateindex.pl - a script for creation of new database. 
                      6: 
                      7: =head1 SYNOPSIS
                      8: 
                      9: updateind.pl [B<-i> I<indexfile>]
                     10: 
                     11: 
                     12: =head1 DESCRIPTION
                     13: 
                     14: Upadets metainformation in the B<chgk> databse. Uses file
                     15:     L<./index> unless [B<-i>] option is used
                     16: 
                     17: An example of the index file follows:
                     18: 
                     19: 
                     20: =head1 BUGS
                     21: 
                     22: The database, user and password are hardcoded. 
                     23: 
                     24: =head1 SEE ALSO
                     25: 
                     26: createindex.pl(1)
                     27: 
                     28: =head1 AUTHOR
                     29: 
                     30: Boris Veytsman
                     31: 
1.2     ! boris      32: =head1 $Id: updateindex.pl,v 1.1 2000/10/18 18:48:58 boris Exp boris $
1.1       boris      33: 
                     34: =cut
                     35: 
                     36:     use strict;
1.2     ! boris      37: use vars qw($opt_i $opt_h);
1.1       boris      38: 
                     39: use Getopt::Std;
                     40: use DBI;
                     41: 
                     42: MAIN: 
                     43: {
1.2     ! boris      44:     my $USAGE="Usage: updateindex.pl -i indexfile\n";
        !            45:     getopts('hm:') or die $USAGE;
        !            46:     if ($opt_h) {
        !            47:        print $USAGE;
        !            48:        exit 0;
        !            49:     }
        !            50:     my($source) = $opt_i || 'index';
        !            51:     my($depth, @depthId);
        !            52:     my $filename;
        !            53:     my($dbh) = DBI->connect("DBI:mysql:chgk", "piataev", "") 
        !            54:        or die "Can't connect to DB chgk\n";
        !            55: 
        !            56:     open INFD, $source or die "Can't open input file: $!\n";
        !            57:     while (<INFD>) {
        !            58:        chomp;
        !            59:        s/
//;
        !            60:        next if (/^\s*$/);
        !            61:        if (s/^(\w*)//) { # File found
        !            62:            $filename = $1;
        !            63:            $depth = -1;
        !            64:        } else {  # Group found
        !            65:            undef $filename;
        !            66:            $depth = -2;
        !            67:        }
        !            68:        s/^(\t*)//;
        !            69:        $depth += length($1);
        !            70:        if ($depth < 0) {
        !            71:            die "Wrong line $_\n";
1.1       boris      72:        }
1.2     ! boris      73:        s/^\s*//;
        !            74:        s/\s$//;
        !            75:        my $title = $dbh->quote($_);
        !            76:        my $ParentId = ($depth) ? $depthId[$depth - 1] : 0;
        !            77:        my $sth;
        !            78:        my $type;
        !            79:        if (defined $filename) {
        !            80:            $type=$dbh->quote('þ');
        !            81:            $filename = $dbh->quote($filename);
        !            82:            $sth = $dbh->prepare("SELECT Id FROM Tournaments 
        !            83:                                   WHERE FileName=$filename");
        !            84:            $sth->execute;
        !            85:            if ($sth->fetchrow) {
        !            86:                print "$filename is already in the DB!\n";
        !            87:                next;
        !            88:            }
        !            89:            $sth = $dbh->prepare("INSERT INTO Tournaments
        !            90:                        (Title, ParentId, FileName, Type) 
        !            91:                        VALUES ($title, $ParentId, $filename, $type;)");
        !            92:            $sth->execute;
        !            93:        } else {
        !            94:            $sth->execute;
        !            95:            $sth = $dbh->prepare("SELECT Id FROM Tournaments 
        !            96:                                   WHERE Title=$title");
        !            97:            $type=$dbh->quote('ç');
        !            98:            if ($sth->fetchrow) {
        !            99:                print "$title is already in the DB!\n";
        !           100:                next;
        !           101:            }
        !           102:            $sth = $dbh->prepare("INSERT INTO Tournaments
        !           103:                        (Title, ParentId,  Type) 
        !           104:                        VALUES ($title, $ParentId, $type;)");
        !           105:            $sth->execute;
        !           106:            my $Id = $sth->{'mysql_insertid'};
        !           107:            $depthId[$depth] = $Id;
        !           108:        }
        !           109: 
        !           110:     }
        !           111:     $dbh->disconnect;
1.1       boris     112: }

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>