userver: userver/storages/redis/request_data_base.hpp Source File
⚠️ This is the documentation for an old userver version. Click here to switch to the latest version.
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Modules Pages Concepts
request_data_base.hpp
1#pragma once
2
3#include <string>
4
5#include <userver/storages/redis/reply_fwd.hpp>
6#include <userver/storages/redis/reply_types.hpp>
7#include <userver/storages/redis/scan_tag.hpp>
8
9USERVER_NAMESPACE_BEGIN
10
11namespace storages::redis {
12
13// Mock note:
14// Request->
15// RequestDataBase
16//
17// RequestDataBase <- RequestDataImpl
18// RequestDataBase <- MockRequestDataBase <- UserMockRequestData
19
20template <typename ReplyType>
21class RequestDataBase {
22 public:
23 virtual ~RequestDataBase() = default;
24
25 virtual void Wait() = 0;
26
27 virtual ReplyType Get(const std::string& request_description) = 0;
28
29 virtual ReplyPtr GetRaw() = 0;
30};
31
32template <ScanTag scan_tag>
34 public:
35 using ReplyElem = typename ScanReplyElem<scan_tag>::type;
36
37 virtual ~RequestScanDataBase() = default;
38
39 void SetRequestDescription(std::string request_description) {
40 request_description_ = std::move(request_description);
41 }
42
43 virtual ReplyElem Get() = 0;
44
45 virtual ReplyElem& Current() = 0;
46
47 virtual bool Eof() = 0;
48
49 protected:
50 // NOLINTNEXTLINE(misc-non-private-member-variables-in-classes)
51 std::string request_description_;
52};
53
54} // namespace storages::redis
55
56USERVER_NAMESPACE_END