Realm C++ SDK 버전 v2.2.0

query.hpp

1
2//
3//저작권 2024 Realm Inc.
4//
5// Apache 라이선스, 버전 2.0("라이선스")에 따라 라이선스가 부여됩니다.
6// 라이선스를 준수하는 경우를 제외하고는 이 파일을 사용할 수 없습니다.
7// 다음에서 라이선스 사본을 얻을 수 있습니다.
8//
9// http://www.apache.org/licences/LICENSE-2.0
10//
11// 관련 법률에서 요구하거나 문서로 동의하지 않는 한, 소프트웨어
12// 라이선스에 따라 배포되는 것은 '있는 그대로' 배포됩니다,
13// Express 묵시적이든 어떤 종류의 보증이나 조건도 제공하지 않습니다.
14// 권한을 관리하는 특정 언어에 대한 내용은 라이선스를 참조하세요.
15// 라이선스에 따른 제한 사항.
16//
18
19#ifndef CPPRALM_BRIDGE_QUERY_HPP
20#define CPPRALM_BRIDGE_QUERY_HPP
21
22#include <cpprealm/internal/bridge/col_key.hpp>
23#include <cpprealm/internal/bridge/obj.hpp>
24#include <cpprealm/internal/bridge/utils.hpp>
25
26#include <optional>
27#include <string_view>
28
29네임스페이스 영역 {
30 구조체 object_id;
31 구조체 십진수128;
32 구조체 uuid;
33 클래스 LinkChain;
34 클래스 쿼리;
35 클래스 Subexpr;
36}
37namespace realm::internal::bridge {
38 구조체 테이블;
39 struct col_key;
40 구조체 타임스탬프
41 구조체 바이너리
42 구조체 object_id;
43 구조체 십진수128;
44 구조체 uuid;
45 구조체 혼합;
46
47 구조체 subexpr {
48 subexpr(subexpr&& other) = 기본값;
49 subexpr& operator=(subexpr&& other) = 기본값;
50 ~subexpr() = 기본값;
51 subexpr(std::unique_ptr<Subexpr> other);
52
53 query equal(const std::optional<int64_t>& rhs) const;
54 query not_equal(const std::optional<int64_t>& rhs) const;
55 쿼리 large(const std::optional<int64_t>& rhs) const;
56 queryless (const std::optional<int64_t>& rhs) const;
57 query large_equal(const std::optional<int64_t>& rhs) const;
58 queryless_equal (const std::optional<int64_t>& rhs) const;
59
60 쿼리 equal(const std::optional<bool>& rhs) const;
61 query not_equal(const std::optional<bool>& rhs) const;
62
63 query equal(const std::optional<double>& rhs) const;
64 쿼리 not_equal(const std::optional<double>& rhs) const;
65 쿼리 large(const std::optional<double>& rhs) const;
66 쿼리 (const std::optional<double>& rhs) const;
67 query large_equal(const std::optional<double>& rhs) const;
68 queryless_equal (const std::optional<double>& rhs) const;
69
70 query equal(const std::optional<binary>& rhs) const;
71 query not_equal(const std::optional<binary>& rhs) const;
72
73 query equal(const std::optional<timestamp>& rhs) const;
74 쿼리 not_equal(const std::optional<timestamp>& rhs) const;
75 query large(const std::optional<timestamp>& rhs) const;
76 쿼리 (const std::optional<timestamp>& rhs) const;
77 query large_equal(const std::optional<timestamp>& rhs) const;
78 queryless_equal (const std::optional<timestamp>& rhs) const;
79
80 query equal(const std::optional<std::string>& rhs) const;
81 query not_equal(const std::optional<std::string>& rhs) const;
82 쿼리 contains(const std::optional<std::string>& rhs, bool case_critical = true) const;
83
84 query equal(const std::optional<internal::bridge::uuid>& rhs) const;
85 query not_equal(const std::optional<internal::bridge::uuid>& rhs) const;
86
87 query equal(const std::optional<internal::bridge::object_id>& rhs) const;
88 query not_equal(const std::optional<internal::bridge::object_id>& rhs) const;
89
90 query equal(const std::optional<internal::bridge::decimal128>& rhs) const;
91 쿼리 not_equal(const std::optional<internal::bridge::decimal128>& rhs) const;
92 쿼리 large(const std::optional<internal::bridge::decimal128>& rhs) const;
93 queryless (const std::optional<internal::bridge::decimal128>& rhs) const;
94 쿼리 large_equal(const std::optional<internal::bridge::decimal128>& rhs) const;
95 queryless_equal (const std::optional<internal::bridge::decimal128>& rhs) const;
96
97 query mixed_equal(const internal::bridge::mixed& rhs) const;
98 query mixed_not_equal(const internal::bridge::mixed& rhs) const;
99
100 쿼리 equal(const std::optional<obj>&) const;
101 query not_equal(const std::optional<obj>&) const;
102
103 private:
104 std::shared_ptr<Subexpr> m_subexpr;
105 };
106
107 구조체 link_chain {
108 link_chain();
109 link_chain(const link_chain& other) ;
110 link_chain& 연산자=(const link_chain& other) ;
111 link_chain(link_chain&& other);
112 link_chain& operator=(link_chain&& other);
113 ~link_chain() = 기본값;
114 link_chain(const LinkChain& other);
115
116 link_chain& link(col_key);
117 link_chain& link(std::string col_name);
118 link_chain& backlink(const 테이블& 원점, col_key 원점_col_key);
119
120 템플릿<typename>
121 subexpr column(col_key);
122 subexpr column_mixed(col_key);
123
124 subexpr subquery(query subquery);
125 테이블 get_table();
126
127 private:
128 std::shared_ptr<LinkChain> m_link_chain;
129 };
130
131 구조체 쿼리 {
132 쿼리();
133 query(const query& other) ;
134 query& operator=(const query& other) ;
135 query(query&& other);
136 query& operator=(query&& other);
137 ~query();
138 쿼리(const 테이블& 테이블); //NOLINT(google-explicit-constructor)
139 테이블 get_table();
140 쿼리 and_query(const 쿼리&);
141 쿼리& 부정();
142
143 쿼리(const Query&); //NOLINT(google-explicit-constructor)
144 연산자 Query() const; //NOLINT(google-explicit-constructor)
145
146 // 조건: null
147 query& equal(col_key column_key, std::nullopt_t);
148 query& not_equal(col_key column_key, std::nullopt_t);
149
150 query& equal(col_key column_key, int64_t value);
151 쿼리& not_equal(col_key column_key, int64_t value);
152 query& large(col_key column_key, int64_t value);
153 query& large_equal(col_key column_key, int64_t value);
154 query&less(col_key column_key, int64_t value);
155 query&less_equal(col_key column_key, int64_t value);
156 query& between(col_key column_key, int64_t from, int64_t to);
157
158 // 조건: double
159 query& equal(col_key column_key, 이중 값);
160 query& not_equal(col_key column_key, double value);
161 query& large(col_key column_key, double value);
162 쿼리& large_equal(col_key column_key, double value);
163 쿼리&less(col_key column_key, double 값);
164 query&less_equal(col_key column_key, 이중 값);
165 query& between(col_key column_key, double from, double to);
166
167 // 조건: 타임스탬프
168 query& equal(col_key column_key, 타임스탬프 값);
169 쿼리& not_equal(col_key column_key, 타임스탬프 값);
170 query& large(col_key column_key, 타임스탬프 값);
171 query& large_equal(col_key column_key, 타임스탬프 값);
172 쿼리&less_equal(col_key column_key, 타임스탬프 값);
173 query&less(col_key column_key, 타임스탬프 값);
174
175 // 조건: UUID
176 query& equal(col_key column_key, uuid 값);
177 query& not_equal(col_key column_key, uuid 값);
178 쿼리& large(col_key column_key, uuid 값);
179 query& large_equal(col_key column_key, uuid 값);
180 쿼리&less_equal(col_key column_key, uuid 값);
181 query&less(col_key column_key, uuid 값);
182
183 // 조건: ObjectId
184 쿼리& equal(col_key column_key, object_id 값);
185 쿼리& not_equal(col_key column_key, object_id 값);
186 query& large(col_key column_key, object_id 값);
187 query& large_equal(col_key column_key, object_id 값);
188 query&less_equal(col_key column_key, object_id 값);
189 query&less(col_key column_key, object_id 값);
190
191 // 조건: 10진수128
192 query& equal(col_key column_key, 십진수128 값);
193 query& not_equal(col_key column_key, 십진수128 값);
194 query& large(col_key column_key, 십진수128 값);
195 query& large_equal(col_key column_key, 십진수128 값);
196 query&less_equal(col_key column_key, 십진수128 값);
197 query&less(col_key column_key, 십진수128 값);
198
199 // 조건: string
200 query& equal(col_key column_key, std::string_view value, bool case_critical = true);
201 쿼리& not_equal(col_key column_key, std::string_view value, bool case_critical = true);
202 query& started_with(col_key column_key, const std::string& value, bool case_critical = true);
203 query& endpoints_with(col_key column_key, const std::string& value, bool case_critical = true);
204 query& contains(col_key column_key, std::string_view value, bool case_critical = true);
205 query& like(col_key column_key, const std::string& value, bool case_critical = true);
206
207 // 조건: 바이너리
208 query& equal(col_key column_key, 바이너리 값, bool case_critical = true);
209 query& not_equal(col_key column_key, 바이너리 값, bool case_critical = true);
210 query& started_with(col_key column_key, 바이너리 값, bool case_critical = true);
211 query& endpoints_with(col_key column_key, 바이너리 값, bool case_critical = true);
212 query& contains(col_key column_key, 바이너리 값, bool case_critical = true);
213 query& like(col_key column_key, 바이너리 b, bool case_critical = true);
214
215 // 조건: 혼합
216 쿼리& equal(col_key column_key, 혼합 값, bool case_critical = true);
217 query& not_equal(col_key column_key, 혼합 값, bool case_critical = true);
218 query& large(col_key column_key, 혼합 값);
219 query& large_equal(col_key column_key, 혼합 값);
220 query&less(col_key column_key, 혼합 값);
221 query&less_equal(col_key column_key, 혼합 값);
222 query& started_with(col_key column_key, 혼합 값, bool case_critical = true);
223 query& endpoints_with(col_key column_key, 혼합 값, bool case_critical = true);
224 query& contains(col_key column_key, 혼합 값, bool case_critical = true);
225 쿼리& like(col_key column_key, 혼합 값, bool case_critical = true);
226
227 // 조건: bool
228 query& equal(col_key column_key, bool value);
229 쿼리& not_equal(col_key column_key, bool value);
230
231 // 조건: 링크
232 쿼리& Links_to(col_key column_key, const internal::bridge::obj& o);
233 query& not_links_to(col_key column_key, const internal::bridge::obj& o);
234
235 쿼리& dictionary_has_value_for_key_equals(col_key column_key, const std::string& key, const 혼합& 값);
236 쿼리& dictionary_has_value_for_key_not_equals(col_key column_key, const std::string& key, const 혼합& 값);
237 쿼리& dictionary_has_value_for_key_greater_than(col_key column_key, const std::string& key, const 혼합& 값);
238 쿼리& dictionary_has_value_for_key_less_than(col_key column_key, const std::string& 키, const 혼합& 값);
239 쿼리& dictionary_has_value_for_key_greater_than_equals(col_key column_key, const std::string& 키, const 혼합& 값);
240 쿼리& dictionary_has_value_for_key_less_than_equals(col_key column_key, const std::string& 키, const 혼합& 값);
241 쿼리& dictionary_contains_string_for_key(col_key column_key, const std::string& key, const std::string& value);
242 쿼리& dictionary_contains_key(col_key column_key, const std::string& key);
243 subexpr dictionary_link_subexpr(col_key column_key, col_key link_column_key, const std::string& key);
244
245 // 표현식
246 static 쿼리 falsepredicate();
247
248 std::string description() const;
249 private:
250 인라인 쿼리* get_query();
251#ifdef CPPRALM_HAVE_GENERATED_BRIDGE_TYPES
252 storage::Query m_query[1];
253#else
254 std::shared_ptr<Query> m_query;
255#endif
256
257 };
258
259 쿼리 연산자 || (const query& lhs, const query& rhs);
260}
261
262#endif //CPPREALM_BRIDGE_QUERY_HPP
정의: 바이너리.hpp:30
정의: col_key.hpp:28
정의: 십진수128.hpp:30
정의: object_id.hpp:31
정의: query.hpp:131
정의: timestamp.hpp:30