1#include "statistics_controller.h"
2#include "filters/AuthFilter.h"
4namespace cavoke::server::controllers {
6StatisticsController::StatisticsController(
7 std::shared_ptr<model::GamesStorage> mGamesStorage,
8 std::shared_ptr<model::StatisticsManager> mStatisticsManager)
9 : m_games_storage(std::move(mGamesStorage)),
10 m_statistics_manager(std::move(mStatisticsManager)) {
13void StatisticsController::game_statistics(
14 const drogon::HttpRequestPtr &req,
15 std::function<
void(
const drogon::HttpResponsePtr &)> &&callback,
16 const std::string &game_id) {
17 if (!m_games_storage->get_game_by_id(game_id).has_value()) {
18 return CALLBACK_STATUS_CODE(k404NotFound);
21 return callback(newNlohmannJsonResponse(
22 m_statistics_manager->get_game_statistics(game_id)));
25void StatisticsController::user_statistics(
26 const drogon::HttpRequestPtr &req,
27 std::function<
void(
const drogon::HttpResponsePtr &)> &&callback,
28 const std::string &user_id) {
29 return callback(newNlohmannJsonResponse(
30 m_statistics_manager->get_user_statistics(user_id)));
33void StatisticsController::user_game_statistics(
34 const drogon::HttpRequestPtr &req,
35 std::function<
void(
const drogon::HttpResponsePtr &)> &&callback,
36 const std::string &user_id,
37 const std::string &game_id) {
38 if (!m_games_storage->get_game_by_id(game_id).has_value()) {
39 return CALLBACK_STATUS_CODE(k404NotFound);
42 return callback(newNlohmannJsonResponse(
43 m_statistics_manager->get_user_game_statistics(user_id, game_id)));
45void StatisticsController::my_user_statistics(
46 const drogon::HttpRequestPtr &req,
47 std::function<
void(
const drogon::HttpResponsePtr &)> &&callback) {
48 return user_statistics(req, std::move(callback),
51void StatisticsController::my_user_game_statistics(
52 const drogon::HttpRequestPtr &req,
53 std::function<
void(
const drogon::HttpResponsePtr &)> &&callback,
54 const std::string &game_id) {
55 return user_game_statistics(req, std::move(callback),
static std::string get_user_id(const HttpRequestPtr &)
Acquires user_id parsed during AuthFilter's execution.