Cavoke  1.1.0
A Platform for creating and hosting multiplayer turn-based board games
Loading...
Searching...
No Matches
statistics_controller.h
1#ifndef CAVOKE_STATISTICS_CONTROLLER_H
2#define CAVOKE_STATISTICS_CONTROLLER_H
3
4#include "drogon/HttpController.h"
5#include "model/games/games_storage.h"
6#include "model/statistics/statistics_manager.h"
7
8namespace cavoke::server::controllers {
9
11 : public drogon::HttpController<StatisticsController, false> {
12 std::shared_ptr<model::GamesStorage> m_games_storage;
13 std::shared_ptr<model::StatisticsManager> m_statistics_manager;
14
15public:
17 std::shared_ptr<model::GamesStorage> mGamesStorage,
18 std::shared_ptr<model::StatisticsManager> mStatisticsManager);
19
20public:
21 METHOD_LIST_BEGIN
22 ADD_METHOD_TO(StatisticsController::game_statistics,
23 "/statistics/game/{game_id}",
24 drogon::Get,
25 drogon::Options);
26 ADD_METHOD_TO(StatisticsController::user_statistics,
27 "/statistics/user/{user_id}",
28 drogon::Get);
29 ADD_METHOD_TO(StatisticsController::user_game_statistics,
30 "/statistics/user/{user_id}/game/{game_id}",
31 drogon::Get);
32 ADD_METHOD_TO(StatisticsController::my_user_statistics,
33 "/profile/my_user_statistics",
34 drogon::Get,
35 "AuthFilter");
36 ADD_METHOD_TO(StatisticsController::my_user_game_statistics,
37 "/profile/my_user_game_statistics/{game_id}",
38 drogon::Get,
39 "AuthFilter");
40 METHOD_LIST_END
41
42protected:
43 void game_statistics(
44 const drogon::HttpRequestPtr &req,
45 std::function<void(const drogon::HttpResponsePtr &)> &&callback,
46 const std::string &game_id);
47
48 void user_statistics(
49 const drogon::HttpRequestPtr &req,
50 std::function<void(const drogon::HttpResponsePtr &)> &&callback,
51 const std::string &user_id);
52
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);
58
59 void my_user_statistics(
60 const drogon::HttpRequestPtr &req,
61 std::function<void(const drogon::HttpResponsePtr &)> &&callback);
62
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);
67};
68
69} // namespace cavoke::server::controllers
70
71#endif // CAVOKE_STATISTICS_CONTROLLER_H