Couchbase C++ SDK 1.0.2 (rev. 51f4775)
Loading...
Searching...
No Matches
get_result.hxx
Go to the documentation of this file.
1/* -*- Mode: C++; tab-width: 4; c-basic-offset: 4; indent-tabs-mode: nil -*- */
2/*
3 * Copyright 2020-Present Couchbase, Inc.
4 *
5 * Licensed under the Apache License, Version 2.0 (the "License");
6 * you may not use this file except in compliance with the License.
7 * You may obtain a copy of the License at
8 *
9 * http://www.apache.org/licenses/LICENSE-2.0
10 *
11 * Unless required by applicable law or agreed to in writing, software
12 * distributed under the License is distributed on an "AS IS" BASIS,
13 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 * See the License for the specific language governing permissions and
15 * limitations under the License.
16 */
17
18#pragma once
19
21#include <couchbase/result.hxx>
22
23#include <chrono>
24#include <cinttypes>
25#include <optional>
26#include <vector>
27
28namespace couchbase
29{
30
37class get_result : public result
38{
39public:
44 get_result() = default;
45
58 std::optional<std::chrono::system_clock::time_point> expiry_time)
59 : result{ cas }
60 , value_{ std::move(value) }
61 , expiry_time_{ expiry_time }
62 {
63 }
64
76 template<typename Document,
77 typename Transcoder = codec::default_json_transcoder,
78 std::enable_if_t<!codec::is_transcoder_v<Document>, bool> = true,
79 std::enable_if_t<codec::is_transcoder_v<Transcoder>, bool> = true>
80 [[nodiscard]] auto content_as() const -> Document
81 {
82 return Transcoder::template decode<Document>(value_);
83 }
84
102 template<typename Transcoder, std::enable_if_t<codec::is_transcoder_v<Transcoder>, bool> = true>
103 [[nodiscard]] auto content_as() const -> typename Transcoder::document_type
104 {
105 return Transcoder::decode(value_);
106 }
107
121 [[nodiscard]] auto expiry_time() const
122 -> const std::optional<std::chrono::system_clock::time_point>&
123 {
124 return expiry_time_;
125 }
126
127private:
128 codec::encoded_value value_{};
129 std::optional<std::chrono::system_clock::time_point> expiry_time_{};
130};
131
132} // namespace couchbase
CAS is a special type that represented in protocol using unsigned 64-bit integer, but only equality c...
Definition cas.hxx:34
Represents result of collection::get.
Definition get_result.hxx:38
auto content_as() const -> typename Transcoder::document_type
Decodes content of the document using given codec.
Definition get_result.hxx:103
get_result(couchbase::cas cas, codec::encoded_value value, std::optional< std::chrono::system_clock::time_point > expiry_time)
Constructs result for get operation.
Definition get_result.hxx:56
auto content_as() const -> Document
Decodes content of the document using given codec.
Definition get_result.hxx:80
auto expiry_time() const -> const std::optional< std::chrono::system_clock::time_point > &
If the document has an expiry, returns the point in time when the loaded document expires.
Definition get_result.hxx:121
Base class for operations of data service.
Definition result.hxx:32
json_transcoder< tao_json_serializer > default_json_transcoder
Definition default_json_transcoder.hxx:28
Represents a single item from the result of collection::scan()
Definition allow_querying_search_index_options.hxx:28
Definition encoded_value.hxx:27