1#ifndef CAVOKE_STATISTICS_CONTROLLER_H
2#define CAVOKE_STATISTICS_CONTROLLER_H
4#include "drogon/HttpController.h"
5#include "model/games/games_storage.h"
6#include "model/statistics/statistics_manager.h"
8namespace cavoke::server::controllers {
11 :
public drogon::HttpController<StatisticsController, false> {
12 std::shared_ptr<model::GamesStorage> m_games_storage;
13 std::shared_ptr<model::StatisticsManager> m_statistics_manager;
17 std::shared_ptr<model::GamesStorage> mGamesStorage,
18 std::shared_ptr<model::StatisticsManager> mStatisticsManager);
22 ADD_METHOD_TO(StatisticsController::game_statistics,
23 "/statistics/game/{game_id}",
26 ADD_METHOD_TO(StatisticsController::user_statistics,
27 "/statistics/user/{user_id}",
29 ADD_METHOD_TO(StatisticsController::user_game_statistics,
30 "/statistics/user/{user_id}/game/{game_id}",
32 ADD_METHOD_TO(StatisticsController::my_user_statistics,
33 "/profile/my_user_statistics",
36 ADD_METHOD_TO(StatisticsController::my_user_game_statistics,
37 "/profile/my_user_game_statistics/{game_id}",
44 const drogon::HttpRequestPtr &req,
45 std::function<
void(
const drogon::HttpResponsePtr &)> &&callback,
46 const std::string &game_id);
49 const drogon::HttpRequestPtr &req,
50 std::function<
void(
const drogon::HttpResponsePtr &)> &&callback,
51 const std::string &user_id);
53 void user_game_statistics(
54 const drogon::HttpRequestPtr &req,
55 std::function<
void(
const drogon::HttpResponsePtr &)> &&callback,
56 const std::string &user_id,
57 const std::string &game_id);
59 void my_user_statistics(
60 const drogon::HttpRequestPtr &req,
61 std::function<
void(
const drogon::HttpResponsePtr &)> &&callback);
63 void my_user_game_statistics(
64 const drogon::HttpRequestPtr &req,
65 std::function<
void(
const drogon::HttpResponsePtr &)> &&callback,
66 const std::string &game_id);