1#ifndef CAVOKE_ROOMS_CONTROLLER_H
2#define CAVOKE_ROOMS_CONTROLLER_H
4#include <drogon/HttpController.h>
5#include "model/rooms/rooms_storage.h"
7namespace cavoke::server::controllers {
9class RoomsController :
public drogon::HttpController<RoomsController, false> {
10 std::shared_ptr<model::RoomsStorage> m_rooms_storage;
11 std::shared_ptr<model::GamesStorage> m_games_storage;
12 std::shared_ptr<model::SessionsStorage> m_sessions_storage;
16 std::shared_ptr<model::GamesStorage> mGamesStorage,
17 std::shared_ptr<model::SessionsStorage> mSessionsStorage);
20 ADD_METHOD_TO(RoomsController::create_room,
24 ADD_METHOD_TO(RoomsController::get_info,
25 "/rooms/{room_id}/get_info",
28 ADD_METHOD_TO(RoomsController::get_info_by_invite_code,
29 "/rooms/get_info_by_invite_code",
32 ADD_METHOD_TO(RoomsController::join,
36 ADD_METHOD_TO(RoomsController::leave,
37 "/rooms/{room_id}/leave",
40 ADD_METHOD_TO(RoomsController::create_session,
41 "/rooms/{room_id}/create_session",
48 const drogon::HttpRequestPtr &req,
49 std::function<
void(
const drogon::HttpResponsePtr &)> &&callback);
52 const drogon::HttpRequestPtr &req,
53 std::function<
void(
const drogon::HttpResponsePtr &)> &&callback,
54 const std::string &room_id);
57 const drogon::HttpRequestPtr &req,
58 std::function<
void(
const drogon::HttpResponsePtr &)> &&callback,
59 const std::string &room_id);
61 void get_info_by_invite_code(
62 const drogon::HttpRequestPtr &req,
63 std::function<
void(
const drogon::HttpResponsePtr &)> &&callback);
65 void join(
const drogon::HttpRequestPtr &req,
66 std::function<
void(
const drogon::HttpResponsePtr &)> &&callback);
68 void leave(
const drogon::HttpRequestPtr &req,
69 std::function<
void(
const drogon::HttpResponsePtr &)> &&callback,
70 const std::string &room_id);