userver: userver/storages/redis/request_data_base.hpp Source File
Loading...
Searching...
No Matches
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