+#include "fetch_max_score_for_songs.h"
+
+FetchMaxScoreForSongs::FetchMaxScoreForSongs(unsigned tournament, std::map<unsigned, unsigned> *score)
+ : tournament(tournament), score(score) {}
+
+void FetchMaxScoreForSongs::operator() (pqxx::transaction<> &t)
+{
+ score->erase(score->begin(), score->end());
+
+ pqxx::result res( t.exec("SELECT song,MAX(feetrating)*1000 AS max_score FROM songratings WHERE "
+ " machine=( SELECT machine FROM tournaments WHERE tournament=" + pqxx::to_string(tournament) + ") GROUP BY song") );
+
+ for (pqxx::result::const_iterator i = res.begin(); i != res.end(); ++i) {
+ unsigned song, max_score;
+ song = i["song"].as(song);
+ max_score = i["max_score"].as(max_score);
+
+ score->insert(std::make_pair(song, max_score));
+ }
+}