Realm C++ SDK Versão C++ v2.2.0

query.hpp

1
2//
3// Autores 2024 Realm Inc.
4//
5// Licenciado sob a Licença Apache, Versão 2.0 (a "Licença");
6// você não pode usar este arquivo, exceto em conformidade com a Licença.
7// Você pode obter uma cópia da Licença em
8//
9// http://www.apache.org/license/LICENSE-2.0
10//
11// A menos que exigido pela lei aplicável ou acordado por escrito, o software
12// distribuído sob a Licença é distribuído "Como está",
13// sem garantias ou condições de qualquer tipo, Express ou implícitas.
14// Consulte a Licença para obter as permissões específicas de domínio do idioma e
15// limitações da Licença.
16//
18
19#ifndef CPPREALM_BRIDGE_QUERY_HPP
20#define CPPREALM_BRIDGE_QUERY_HPP
21
22#include <cpprealm/internal/bridge/col_key.hpp>
23#include <cpprealm/internal/bridge/obj.hpp>
24#include <cprealm/internal/bridge/utils.hpp>
25
26#include <optional>
27#include <string_view>
28
29namespace Realm {
30 estrutura object_id;
31 estrutura decimal128;
32 struct uuid;
33 classe LinkChain;
34 query de classe ;
35 classe Subexpr;
36}
37namespace realm::internal::bridge {
38 tabela estrutura ;
39 struct col_key;
40 carimbo de data/hora da estrutura ;
41 binário estruturado ;
42 estrutura object_id;
43 estrutura decimal128;
44 struct uuid;
45 estrutura mista;
46
47 estrutura, estrutura subexpr {
48 subexpr(subexpr&& outro) = padrão;
49 subexpr& operator=(subexpr&& other) = default;
50 ~subexpr() = padrão;
51 subexpr(std::unique_ptr<Subexpr> outro);
52
53 query equal(const std::optional<int64_t>& rhs) const;
54 query not_equal(const std::optional<int64_t>& rhs) const;
55 query maior(const std::opcional<int64_t>& rhs) const;
56 query menos(const std::opcional<int64_t>& rhs) const;
57 query maior_equal(const std::opcional<int64_t>& rhs) const;
58 query less_equal(const std::opcional<int64_t>& rhs) const;
59
60 query equal(const std::opcional<bool>& rhs) const;
61 query not_equal(const std::optional<bool>& rhs) const;
62
63 query equal(const std::opcional<double>& rhs) const;
64 query not_equal(const std::optional<double>& rhs) const;
65 query maior(const std::opcional<double>& rhs) const;
66 query menos(const std::opcional<double>& rhs) const;
67 query maior_equal(const std::opcional<double>& rhs) const;
68 query less_equal(const std::opcional<double>& rhs) const;
69
70 query equal(const <binary>std::opcional<binário>& rhs) const;
71 query not_equal(const std::optional<binary>& rhs) const;
72
73 query equal(const std::opcional<timestamp>& rhs) const;
74 query not_equal(const std::optional<timestamp>& rhs) const;
75 query maior(const std::opcional<timestamp>& rhs) const;
76 query menos(const std::opcional<timestamp>& rhs) const;
77 query maior_equal(const std::opcional<timestamp>& rhs) const;
78 query less_equal(const std::optional<timestamp>& rhs) const;
79
80 query equal(const std::opcional<std::string>& rhs) const;
81 query not_equal(const std::optional<std::string>& rhs) const;
82 query contém(const std::opcional<std::string>& rhs, bool case_sensitive = 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 igual(const std::opcional <interno::bridge::decimal128>& rhs) const;
91 query not_equal(const std::optional<internal::bridge::decimal128>& rhs) const;
92 query maior(const std::opcional <interno::bridge::decimal128>& rhs) const;
93 query menos(const std::opcional <interno::bridge::decimal128>& rhs) const;
94 query maior_equal(const std::opcional<interno::ponte::decimal128>& rhs) const;
95 query less_equal(const std::opcional <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 query equal(const std::opcional<obj>&) const;
101 query not_equal(const std::opcional<obj>&) const;
102
103 privado:
104 std::shared_ptr<Subexpr> m_subexpr;
105 };
106
107 estrutura, estrutura link_chain {
108 link_chain();
109 link_chain(const link_chaine outros);
110 link_chain& operator=(const link_chain& other) ;
111 link_chain(link_chain&& outro);
112 link_chain& operator=(link_chain&& other);
113 ~link_chain() = padrão;
114 link_chain(const LinkChain e outros);
115
116 link_chain& link(col_key);
117 link_chain& link(std::string col_name);
118 link_chain& backlink(tabelaconst & origem, col_key origin_col_key);
119
120 modelo<nome do tipo>
121 subexpr column(col_key);
122 subexpr column_mixed(col_key);
123
124 subexpr subquery (query subquery);
125 tabela get_table();
126
127 privado:
128 std::shared_ptr<LinkChain> m_link_chain;
129 };
130
131 estrutura, estrutura query {
132 query();
133 query(queryconst e outra );
134 query& operator=(queryconst & other) ;
135 query(query&& outro);
136 operador de query=(query&& outro);
137 ~query();
138 query(tabelaconst etabela); //NOLINT(google-explicit-constructor)
139 tabela get_table();
140 query and_query(queryconst &);
141 query& negate();
142
143 query( query const &); //NOLINT(google-explicit-constructor)
144 operador Query() const; //NOLINT(google-explicit-constructor)
145
146 // Condições: nulas
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 query& not_equal(col_key column_key, int64_t value);
152 querye maior(col_key column_key, int64_t value);
153 query& maior_equal(col_key column_key, int64_t valor);
154 querye menos(col_key column_key, int64_t value);
155 query& less_equal(col_key column_key, int64_t value);
156 query& entre(col_key column_key, int64_t de, int64_t para);
157
158 // Condições: double
159 querye igual(col_key column_key, valor duplo );
160 query& not_equal(col_key column_key, valor duplo );
161 querye maior(col_key column_key, valor duplo );
162 query& maior_equal(col_key column_key, valor double );
163 querye menos(col_key column_key, valor double );
164 query& less_equal(col_key column_key, valor duplo );
165 query& entre(col_key column_key, duplo de, duplo para);
166
167 // Condições: carimbo de data/hora
168 querye igual(col_key column_key, valor do timestamp );
169 query& not_equal(col_key column_key, valor do timestamp );
170 querye maior(col_key column_key, valor do timestamp );
171 query& maior_equal(col_key column_key, valor do carimbo de data/hora);
172 query& less_equal(col_key column_key, valor do timestamp );
173 querye menos(col_key column_key, valor do timestamp );
174
175 // Condições: UUID
176 query& equal(col_key column_key, uuid value);
177 query& not_equal(col_key column_key, valor uuid );
178 querye maior(col_key column_key, valor uuid );
179 query& maior_equal(col_key column_key, valor uuid );
180 query& less_equal(col_key column_key, valor uuid );
181 querye menos(col_key column_key, valor uuid );
182
183 // Condições: ObjectId
184 querye igual(col_key column_key, object_id value);
185 query& not_equal(col_key column_key, object_id value);
186 querye maior(col_key column_key, object_id value);
187 query& maior_equal(col_key column_key, object_id valor);
188 query& less_equal(col_key column_key, object_id value);
189 querye menos(col_key column_key, object_id value);
190
191 // Condições: 128decimais
192 querye igual(col_key column_key, valor decimal128 );
193 query& not_equal(col_key column_key, valor decimal128 );
194 querye maior(col_key column_key, valor decimal128 );
195 query& maior_equal(col_key column_key, valor decimal128 );
196 query& less_equal(col_key column_key, valor decimal128 );
197 querye menos(col_key column_key, valor decimal128 );
198
199 // Condições: string
200 query& equal(col_key column_key, std::string_view value, bool case_sensitive = true);
201 query& not_equal(col_key column_key, std::string_view value, bool case_sensitive = true);
202 querye começa com (col_key column_key, const std::string& valor, bool case_sensitive = true);
203 query&ends_with(col_key column_key, const std::string& valor, bool case_sensitive = true);
204 querye contém (col_key column_key, std::string_view value, bool case_sensitive = true);
205 querye semelhante(col_key column_key, const std::string& valor, bool case_sensitive = true);
206
207 // Condições: binário
208 querye igual (col_key column_key, valor binário , bool case_sensitive = true);
209 query& not_equal (col_key column_key, valor binário , bool case_sensitive = true);
210 querye começa com (col_key column_key, valor binário , bool case_sensitive = true);
211 queryeends_with(col_key column_key, valor binário , bool case_sensitive = true);
212 querye contém(col_key column_key, valor binário , bool case_sensitive = true);
213 query& semelhante(col_key column_key, binary b, bool case_sensitive = true);
214
215 // Condições: Misto
216 querye igual (col_key column_key, valor misto , bool case_sensitive = true);
217 query& not_equal (col_key column_key, valor misto , bool case_sensitive = true);
218 querye maior(col_key column_key, valor misto );
219 query& maior_equal(col_key column_key, valor misto );
220 querye menos(col_key column_key, valor misto );
221 query& less_equal(col_key column_key, valor misto );
222 querye começa com (col_key column_key, valor misto , bool case_sensitive = true);
223 query& end_with (col_key column_key, valor misto , bool case_sensitive = true);
224 querye contém(col_key column_key, valor misto , bool case_sensitive = true);
225 query& semelhante(col_key column_key, valor misto , bool case_sensitive = true);
226
227 // Condições: bool
228 query& equal(col_key column_key, bool value);
229 query& not_equal(col_key column_key, valor bool );
230
231 // Condições: links
232 query& 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 querye dictionary_has_value_for_key_equals(col_key column_key, const std::string& chave, const misto& valor);
236 query& dictionary_has_value_for_key_not_equals(col_key column_key, const std::string& chave, const misto& valor);
237 query& dictionary_has_value_for_key_greter_than(col_key column_key, const std::string& chave, const misto& valor);
238 query& dictionary_has_value_for_key_less_than(col_key column_key, const std::string& chave, const misto& valor);
239 query& dictionary_has_value_for_key_greter_than_equals(col_key column_key, const std::string& chave, const misto& valor);
240 query& dictionary_has_value_for_key_less_than_equals(col_key column_key, const std::string& chave, const misto& valor);
241 query& dictionary_contains_string_for_key(col_key column_key, const std::string& chave, const std::string& valor);
242 query& 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 // Expressões
246 estático query falsepredicate();
247
248 std::string descrição() const;
249 privado:
250 query embutida * get_query();
251#ifdef CPPREALM_HVE_GENERATED_BRIDGE_TYPes
252 armazenamento::Query m_query[1];
253#else
254 std::shared_ptr<Query> m_query;
255#endif
256
257 };
258
259 operador de query || (queryconst & lhs,queryconst & rhs);
260}
261
262#endif //CPPrealm_BRIDGE_QUERY_HPP
Definição: binary.hpp:30
Definição: col_key.hpp:28
Definição: decimal128.hpp:30
Definição: misto.hpp:69
Definição: obj.hpp:123
Definição: object_id.hpp:31
Definição: query.hpp:131
Definição: query.hpp:47
Definição: table.hpp:40
Definição: timestamp.hpp:30
Definição: uuid.hpp:32