<
typenameT>
41 usingis_optional = internal::type_info::is_optional<T>;
44 template<
typenameClass,
typename...Properties>
46 template<auto Ptr,
boolIsPrimaryKey>
50 usingsync_config = internal::bridge::realm::sync_config;
51 usingdb_config = internal::bridge::realm::config;
52 usingsync_session = internal::bridge::sync_session;
53 usingsync_error = internal::bridge::sync_error;
55 structsync_subscription_set;
57 template<
typenameT>
58 structthread_safe_reference;
64 static inlinestd::vector<internal::bridge::object_schema> schemas;
68 if(!config.get_schema())
69config.set_schema(db::schemas);
73 voidbegin_write()
const{ m_realm.begin_transaction(); }
74 voidcommit_write()
const{ m_realm.commit_transaction(); }
76 template<
typenameFn>
77std::invoke_result_t<Fn> write(Fn&& fn)
const{
79 if constexpr(!std::is_void_v<std::invoke_result_t<Fn>>) {
88 template<
typenameU>
90 usingT = std::remove_const_t<U>;
91 static_assert(
sizeof(
managed<T>),
"Must declare schema for T");
92 autotable = m_realm.table_for_object_type(
managed<std::remove_const_t<T>>::schema.name);
98m_obj = table.create_object();
101std::apply([&m_obj, &v,
this](
auto&& ...p) {
102(
accessor<
typenamestd::decay_t<
decltype(p)>::Result>::set(
103m_obj, m_obj.get_table().get_column_key(p.name), m_realm, v.*(std::decay_t<
decltype(p)>::ptr)
106 return managed<T>(std::move(m_obj), m_realm);
108 template<
typenameT>
109 voidremove(T&
object)
111 autotable = m_realm.table_for_object_type(T::schema.name);
112table.remove_object(
object.m_obj.get_key());
114 template<
typenameT>
115 voidinsert(
conststd::vector<T> &v) {
116 static_assert(
sizeof(
managed<T>),
"Must declare schema for T");
118 for(
auto& obj : v) {
124m_obj = table.create_object();
126std::apply([&m_obj, &obj](
auto&& ...p) {
127(
accessor<
typenamestd::decay_t<
decltype(p)>::Result>::set(
128m_obj, m_obj.get_table().get_column_key(p.name), obj.*(std::decay_t<
decltype(p)>::ptr)
135 template<
size_tN,
typenameTpl,
typename...Ts>
autov_add(
constTpl& tpl,
conststd::tuple<Ts...>& vs) {
136 if constexpr(N + 1 ==
sizeof...(Ts)) {
137 auto managed= add(std::move(std::get<N>(vs)));
138 returnstd::tuple_cat(tpl, std::make_tuple(std::move(
managed)));
140 auto managed= add(std::move(std::get<N>(vs)));
141 returnv_add<N + 1>(std::tuple_cat(tpl, std::make_tuple(std::move(
managed))), vs);
145 template<
typename...Ts>
146std::tuple<managed<Ts>...> insert(Ts&&... v) {
148 returnv_add<0>(tpl, std::make_tuple(v...));
150 template<
typenameT>
156[[maybe_unused]]
boolrefresh()
158 returnm_realm.refresh();
163std::optional<sync_session> get_sync_session()
const{
164 returnm_realm.get_sync_session();
167 template<
typenameT>
170 auto object= internal::bridge::resolve<internal::bridge::object>(m_realm, std::move(tsr.m_tsr));
172 return managed<T>(std::move(m_obj), m_realm);
175 boolis_frozen()
const;
181 friendstruct ::realm::thread_safe_reference<db>;
182 template<
typename,
typename>
friend struct managed;
183 template<
typenameT>
184 friend voidinternal::bridge::realm::config::set_client_reset_handler(
constclient_reset_mode_base<T>&);
188m_realm = std::move(r);
196 booloperator==(
const db&,
const db&);
197 booloperator!=(
const db&,
const db&);
199 template<
typename...Ts>
201 autoconfig_copy = config;
202 if constexpr(
sizeof...(Ts) == 0) {
203config_copy.set_schema(db::schemas);
205std::vector<internal::bridge::object_schema> schema;
206(schema.push_back(managed<Ts>::schema.to_core_schema()), ...);
207config_copy.set_schema(schema);
209 returndb(config_copy);
211 template<
typename...Ts>
212[[deprecated(
"This function is deprecated and is replaced by `db::open(const db_config& config)`.")]]
213 inlinedb open(
conststd::string& path,
conststd::shared_ptr<scheduler>& scheduler) {
214 returnopen<Ts...>(db_config(path, scheduler));
217 template<
typenameT>
218 inlinestd::ostream& operator<< (std::ostream& stream,
constT*&
object)
220stream <<
"link:"<<
object<< std::endl;
Definition: accessors.hpp:33
Definition: results.hpp:46
Definition: results.hpp:411
Definition: flex_sync.hpp:150
Definition: thread_safe_reference.hpp:27
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4