X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=bigscreen%2Ffetch_max_score_for_players.cpp;h=fc256cbae770782349b96a65577b010ea23ec106;hb=405a983fa5d81d4ea5efdf13fa43dbe14a6d8a87;hp=3a89541aa65a19f50f79145e7ea4cf785eae5ebd;hpb=33798d738eb88b893f21818275c2f0f4b7f7562e;p=ccbs diff --git a/bigscreen/fetch_max_score_for_players.cpp b/bigscreen/fetch_max_score_for_players.cpp index 3a89541..fc256cb 100644 --- a/bigscreen/fetch_max_score_for_players.cpp +++ b/bigscreen/fetch_max_score_for_players.cpp @@ -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));