1 #include "fetch_max_score_for_player.h"
3 FetchMaxScoreForPlayer::FetchMaxScoreForPlayer(unsigned tournament, unsigned player, unsigned round, unsigned *score)
4 : tournament(tournament), player(player), round(round), score(score) {}
6 void FetchMaxScoreForPlayer::operator() (pqxx::transaction<> &t)
8 pqxx::result res( t.exec("SELECT MAX(feetrating)*1000 AS max_score FROM songratings WHERE "
9 "machine=( SELECT machine FROM tournaments WHERE tournament=" + pqxx::to_string(tournament) + ") AND "
10 "(song NOT IN ( SELECT song FROM scores WHERE tournament=" + pqxx::to_string(tournament) + " AND song IS NOT NULL AND ( "
11 "round=" + pqxx::to_string(round) + " OR parallel=0 OR ( player=" + pqxx::to_string(player) + " AND chosen='t' ) ) ) )") );
13 *score = res.at(0)["max_score"].as(*score);