Cavoke  1.1.0
A Platform for creating and hosting multiplayer turn-based board games
Loading...
Searching...
No Matches
rooms_storage.h
1#ifndef CAVOKE_ROOMS_STORAGE_H
2#define CAVOKE_ROOMS_STORAGE_H
3
4#include <memory>
5#include "model/sessions/game_session.h"
6#include "model/sessions/sessions_storage.h"
7#include "sql-models/Rooms.h"
8
9namespace cavoke::server::model {
10
13 explicit room_error(std::string message);
14};
15
17 std::shared_ptr<SessionsStorage> m_sessions_storage;
18
19public:
20 explicit RoomsStorage(std::shared_ptr<SessionsStorage> mSessionsStorage);
21
22 struct RoomInfo {
23 std::string room_id;
24 std::string invite_code;
25 std::string display_name;
26 std::string session_id; // let "" mean null
28 std::string host_id;
29 std::vector<GameSessionAccessObject::UserInfo> members;
30
31 static RoomInfo from_room_and_members(
32 const drogon_model::cavoke_orm::Rooms &room_orm,
33 const std::vector<GameSessionAccessObject::UserInfo> &members);
34 };
35
36 std::vector<GameSessionAccessObject::UserInfo> get_members(
37 const std::string &room_id);
38
39 std::optional<RoomInfo> get_by_id(const std::string &room_id);
40
41 std::optional<RoomInfo> get_by_invite_code(const std::string &invite_code);
42
43 RoomInfo create_room(const std::string &host_id,
44 const std::string &display_name);
45
46 void add_user(const std::string &room_id, const std::string &user_id);
47
48 void remove_user(const std::string &room_id, const std::string &user_id);
49
50 bool is_member(const std::string &room_id, const std::string &user_id);
51
53 const std::string &room_id,
54 const GameConfig &game_config);
55};
56
57NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE(RoomsStorage::RoomInfo,
58 room_id,
59 invite_code,
60 display_name,
61 session_id,
62 session,
63 host_id,
64 members)
65
66} // namespace cavoke::server::model
67#endif // CAVOKE_ROOMS_STORAGE_H
Base exception for errors thrown in server.
Serializable representation of session for client.
Definition: game_session.h:97
exception for errors thrown during actions with rooms
Definition: rooms_storage.h:12