]> git.sesse.net Git - ccbs/commitdiff
Fix more stuff related to making new groups.
authorSteinar H. Gunderson <sesse@samfundet.no>
Mon, 14 Feb 2005 21:46:25 +0000 (21:46 +0000)
committerSteinar H. Gunderson <sesse@samfundet.no>
Mon, 14 Feb 2005 21:46:25 +0000 (21:46 +0000)
html/do-start-round.pl
html/show-tournament.pl
sql/ccbs.sql

index 2e503bbb8f5ca1cb3a20527221d21724633ad951..ff0a4178068b46e1273794bb2d1d5981d9984e78 100755 (executable)
@@ -55,6 +55,17 @@ for my $g (1..$num_groups) {
                my $ref = $dbh->selectrow_hashref('SELECT * FROM songs ORDER BY random() LIMIT 1');
                $dbh->do('INSERT INTO roundrandomsongs (tournament, round, parallel, song) VALUES (?,?,?,?)',
                        undef, $tournament, $round, $g, $ref->{'song'});
                my $ref = $dbh->selectrow_hashref('SELECT * FROM songs ORDER BY random() LIMIT 1');
                $dbh->do('INSERT INTO roundrandomsongs (tournament, round, parallel, song) VALUES (?,?,?,?)',
                        undef, $tournament, $round, $g, $ref->{'song'});
+
+               $dbh->do('INSERT INTO scores SELECT tournament,round,parallel,player,?,?,NULL,NULL,\'f\',NULL FROM roundparticipation WHERE tournament=? AND round=? AND parallel=?', undef,
+                       $s, $ref->{'song'}, $tournament, $round, $g);
+       }
+}
+
+# Add empty "score" records for the chosen songs.
+for my $g (1..$num_groups) {
+       for my $s (1..$num_chosen) {
+               $dbh->do('INSERT INTO scores SELECT tournament,round,parallel,player,?,NULL,NULL,NULL,\'t\',NULL FROM roundparticipation WHERE tournament=? AND round=? AND parallel=?', undef,
+                       $s + $num_random, $tournament, $round, $g);
        }
 }
 
        }
 }
 
index 8ff04c347c9e22a703691f79167e6b2495a28143..b4b6e04b47d478161ecf202fbab859beb9975f11 100755 (executable)
@@ -15,7 +15,7 @@ my $rankings = ccbs::db_fetch_all($dbh, 'SELECT ranking,nick,COALESCE(points,-1)
 # Swoop all the data in in a big join, then order it over to quasi-sane Perl objects.
 # (round -> parallel -> player -> songs -> title,chosen,score)
 my $scores = ccbs::db_fetch_all($dbh,
 # Swoop all the data in in a big join, then order it over to quasi-sane Perl objects.
 # (round -> parallel -> player -> songs -> title,chosen,score)
 my $scores = ccbs::db_fetch_all($dbh,
-       'SELECT round,parallel,position,nick,title,chosen,score FROM roundparticipation NATURAL LEFT JOIN roundrandomsongs NATURAL LEFT JOIN scores NATURAL JOIN songs NATURAL JOIN players WHERE tournament=? ORDER BY round,parallel,position,songnumber',
+       'SELECT round,parallel,position,nick,title,chosen,score FROM roundparticipation NATURAL JOIN players NATURAL JOIN scores NATURAL LEFT JOIN songs WHERE tournament=? ORDER BY round,parallel,position,songnumber',
        $id);
 
 my @rounds = ();
        $id);
 
 my @rounds = ();
@@ -39,7 +39,7 @@ for my $score (@$scores) {
        }
        if ($score->{'position'} == 1) {
                if ($score->{'chosen'}) {
        }
        if ($score->{'position'} == 1) {
                if ($score->{'chosen'}) {
-                       push @{$p->[$#$p]->{'songs'}}, '';
+                       push @{$p->[$#$p]->{'songs'}}, 'Selvvalgt';
                } else {
                        push @{$p->[$#$p]->{'songs'}}, $score->{'title'};
                }
                } else {
                        push @{$p->[$#$p]->{'songs'}}, $score->{'title'};
                }
@@ -57,7 +57,9 @@ for my $score (@$scores) {
                chosen => $score->{'chosen'},
                score => $score->{'score'}
        };
                chosen => $score->{'chosen'},
                score => $score->{'score'}
        };
-       $pl->[$#$pl]->{'total'} += $score->{'score'};
+       if (defined($score->{'score'})) {
+               $pl->[$#$pl]->{'total'} += $score->{'score'};
+       }
 }
 
 my $num_rounds = scalar @rounds;
 }
 
 my $num_rounds = scalar @rounds;
index 374af67217eac9e62c9f1e9142320d6a52b07977..45897b336befe8d0435c231854eeb47b00475d9d 100644 (file)
@@ -143,9 +143,7 @@ CREATE TABLE scores (
        chosen BOOLEAN,
        score INTEGER CHECK (score IS NULL OR (score >= 0 AND score <= 10000)),
        
        chosen BOOLEAN,
        score INTEGER CHECK (score IS NULL OR (score >= 0 AND score <= 10000)),
        
-       FOREIGN KEY (song) REFERENCES songs (song),
        FOREIGN KEY (song, playmode, difficulty) REFERENCES songratings (song, playmode, difficulty),
        FOREIGN KEY (tournament, round, parallel, player) REFERENCES roundparticipation (tournament, round, parallel, player),
        FOREIGN KEY (song, playmode, difficulty) REFERENCES songratings (song, playmode, difficulty),
        FOREIGN KEY (tournament, round, parallel, player) REFERENCES roundparticipation (tournament, round, parallel, player),
-       UNIQUE (tournament, round, parallel, player, songnumber),
-       PRIMARY KEY (tournament, round, parallel, player, song)
+       PRIMARY KEY (tournament, round, parallel, player, songnumber)
 );
 );