userver: userver/storages/redis/request_data_base.hpp Source File
Loading...
Searching...
No Matches
request_data_base.hpp
Go to the documentation of this file.
1#pragma once
2
3/// @file userver/storages/redis/request_data_base.hpp
4/// @brief Abstract bases for Redis request/scan pending results
5
6#include <string>
7
8#include <userver/engine/impl/context_accessor.hpp>
9#include <userver/storages/redis/reply_fwd.hpp>
10#include <userver/storages/redis/reply_types.hpp>
11#include <userver/storages/redis/scan_tag.hpp>
12
13USERVER_NAMESPACE_BEGIN
14
15namespace storages::redis {
16
17// Mock note:
18// Request->
19// RequestDataBase
20//
21// RequestDataBase <- RequestDataImpl
22// RequestDataBase <- MockRequestDataBase <- UserMockRequestData
23
24template <typename ReplyType>
26public:
27 virtual ~RequestDataBase() = default;
28
29 virtual void Wait() = 0;
30
31 virtual ReplyType Get(const std::string& request_description) = 0;
32
33 virtual ReplyPtr GetRaw() = 0;
34
35 virtual engine::impl::ContextAccessor* TryGetContextAccessor() noexcept = 0;
36};
37
38template <ScanTag TScanTag>
40public:
41 using ReplyElem = typename ScanReplyElem<TScanTag>::type;
42
43 virtual ~RequestScanDataBase() = default;
44
45 void SetRequestDescription(std::string request_description) {
46 request_description_ = std::move(request_description);
47 }
48
49 virtual ReplyElem Get() = 0;
50
51 virtual ReplyElem& Current() = 0;
52
53 virtual bool Eof() = 0;
54
55protected:
56 // NOLINTNEXTLINE(misc-non-private-member-variables-in-classes)
57 std::string request_description_;
58};
59
60} // namespace storages::redis
61
62USERVER_NAMESPACE_END