forked from CPP-Final-Project/Chat_Server
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathRoomStorage_Service.h
More file actions
69 lines (48 loc) · 2.74 KB
/
RoomStorage_Service.h
File metadata and controls
69 lines (48 loc) · 2.74 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
#pragma once
#ifndef MESSAGEHISTORY_SERVICE_H
#define MESSAGEHISTORY_SERVICE_H
#include <qobject.h>
#include "SrvRoom.h"
#include "DBRoom.h"
#include "DBMessage.h"
#include "RoomRepository.h"
#include "LocalStorage_Service.h"
#include "RatingCounter_Service.h"
#include <QtCore>
class RoomStorage_Service : public QObject
{
Q_OBJECT
public:
[[nodiscard]] bool is_started();
void make_started();
[[nodiscard]] static RoomStorage_Service* getInstance();
static void init();
[[nodiscard]] QList<QSharedPointer<SrvRoom>> getRooms();
[[nodiscard]] QSharedPointer<SrvRoom> getRoom(const qint32& room_id_);
QSet<QSharedPointer<User_Message>> getMessages(const quint32& room_id_, const QDateTime& from_, const QDateTime& to_);
// If from_to_ == false - search for older than time_
QFuture<QSet<QSharedPointer<User_Message>>> getMessages(const quint32& room_id_, const QDateTime& time_, const quint32& pool_size_ = 20, const bool from_to_ = false);
QFuture<QSharedPointer<SrvRoom>> createRoom(QSharedPointer<SrvRoom>& shp_new_room_);
public slots:
void addMessageToRoom(const qint32& room_id_, const QSharedPointer<User_Message>& shp_user_);
void addMessagesToRoom(const qint32& room_id_, const QSet<QSharedPointer<User_Message>>& messages_);
[[nodiscard]] bool addConnecntedUserToRoom(const qint32& room_id_, const QSharedPointer<SrvUser>& shp_user_);
[[nodiscard]] bool deleteConnecntedUserFromRoom(const qint32& room_id_, const QSharedPointer<SrvUser>& shp_user_);
private:
void addRoom(const QSharedPointer<SrvRoom>& shp_room_);
explicit RoomStorage_Service(QObject* parent_ = nullptr);
static inline QSharedPointer<RoomStorage_Service> shp_instance = nullptr;
void addLikeToMessage(const quint32& room_id_, const QUuid& message_id_, const QDateTime& message_datetime_, const QString& user_login_, const bool like_dislike_);
void downloadRoomsFromDB();
void uploadRoomToDB(const QSharedPointer<SrvRoom>& shp_new_room_) const;
void getMessagesFromDB(const quint32& room_id_, const QDateTime& from_, const QDateTime& to_);
QSet<QSharedPointer<User_Message>> getMessagesFromDB(const quint32& room_id_, const QDateTime& date_,
const bool& from_to_, quint32 pool_size_);
void getMessagesFromLocalStorage(const quint32& room_id_, const QDateTime& from_, const QDateTime& to_);
QSet<QSharedPointer<User_Message>> getMessagesFromLocalStorage(const quint32& room_id_, const QDateTime& time_, bool from_to_, const quint32& pool_size_);
QMap<qint32, QSharedPointer<SrvRoom>> rooms_storage;
bool started = false;
signals:
void messageRetrieved(QList<QSharedPointer<SrvRoom>>);
};
#endif //MESSAGEHISTORY_SERVICE_H