]> git.sesse.net Git - ccbs/blobdiff - bigscreen/fetch_max_score_for_players.cpp
There is no freshcolumnheading.
[ccbs] / bigscreen / fetch_max_score_for_players.cpp
index 3a89541aa65a19f50f79145e7ea4cf785eae5ebd..fc256cbae770782349b96a65577b010ea23ec106 100644 (file)
@@ -7,31 +7,13 @@ void FetchMaxScoreForPlayers::operator() (pqxx::transaction<> &t)
 {
        scores->erase(scores->begin(), scores->end());
        
-       pqxx::result res( t.exec(
-               "SELECT player,"
-               "  ("
-               "     SELECT feetrating"
-               "     FROM songratings"
-               "     WHERE machine=( SELECT machine FROM tournaments WHERE tournament=" + pqxx::to_string(tournament) + " ) " // only find songs on the machine we use
-               "     AND song NOT IN ("                      // not a song that has been in elimination or seeding
-               "       SELECT song FROM scores "
-               "         WHERE tournament=" + pqxx::to_string(tournament) +
-               "         AND song IS NOT NULL"
-               "         AND parallel=0"
-               "         AND chosen='f'"
-               "     )"
-               "     AND (player,song) NOT IN ("             // not a song the player has chosen before, or is a random song in this round
-               "       SELECT player,song FROM scores"
-               "          WHERE tournament=" + pqxx::to_string(tournament) +
-               "          AND song IS NOT NULL" +
-               "          AND ( chosen='t' OR round=" + pqxx::to_string(round) + " )"
-               "       )"
-               "     ORDER BY feetrating DESC LIMIT 1"      
-               "  ) * 1000 AS max_score FROM tournamentparticipation") );
+       pqxx::result res( t.exec("SELECT * FROM get_max_score_for_players("
+               + pqxx::to_string(tournament) + ", " + pqxx::to_string(round) +
+               ", 'single')") );
        
        for (pqxx::result::const_iterator i = res.begin(); i != res.end(); ++i) {
                unsigned player, max_score;
-               player = i["player"].as(player);
+               player = i["song"].as(player);
                max_score = i["max_score"].as(max_score);
 
                scores->insert(std::make_pair(player, max_score));