Evil trick to be able to put scoreparsing into a transaction block again.
authorSteinar H. Gunderson <sesse@samfundet.no>
Sun, 13 Feb 2005 18:44:34 +0000 (18:44 +0000)
committerSteinar H. Gunderson <sesse@samfundet.no>
Sun, 13 Feb 2005 18:44:34 +0000 (18:44 +0000)
parse/parse-ddreurope-tournament.pl

index 53c8f5d..e838dd6 100644 (file)
@@ -6,11 +6,10 @@ use Date::Manip;
 # Parses tournament results from the DDR Europe result list
 
 my $season = shift;
-my ($name, $round, $group, $player, @rsongs);
+my ($name, $round, $group, $player, $position, @rsongs);
 die "Missing season (give on command line)." if (!defined($season));
 
-# commented out -- see player below
-# print "begin;\n";
+print "begin;\n";
 
 while (<>) {
        if (/<h2> \s* (.*?) \s* <\/h2>/x) {
@@ -41,12 +40,17 @@ while (<>) {
        # Player's results (header)
        if (/^ <tr><td \s* class=dtd> .*? class="link"> (.*?) <\/a> $/x) {
                $player = $1;
-               printf "INSERT INTO players (nick) VALUES ('%s');\n", $player;
-               printf "INSERT INTO roundparticipation (tournament, round, parallel, player) VALUES (\n";
+
+               # Woot, evil
+               printf "INSERT INTO players SELECT nextval('players_player_seq') AS player, '%s' AS nick WHERE '%s' NOT IN ( SELECT nick FROM players );\n", $player, $player;
+               
+               printf "INSERT INTO roundparticipation (tournament, round, parallel, player, position) VALUES (\n";
                print "   (SELECT tournament FROM tournaments WHERE name='$name'),\n";
                print "   $round, $group,\n";
-               print "   (SELECT player FROM players WHERE nick='$player')\n";
+               print "   (SELECT player FROM players WHERE nick='$player'),\n";
+               print "   $position\n";
                print ");\n";
+               ++$position;
        }
 
        # Player's results (score)
@@ -97,6 +101,8 @@ while (<>) {
                $group = $2;
                $group = 0 if ($1 eq 'Players');
 
+               $position = 1;
+
                print "INSERT INTO groups (tournament, round, parallel) VALUES (\n";
                print "   (SELECT tournament FROM tournaments WHERE name='$name'),\n";
                print "   $round, $group);\n";