19#ifndef CPPREALM_DB_HPP
22#include <cpprealm/accessors.hpp>
23#include <cpprealm/macros.hpp>
24#include <cpprealm/results.hpp>
25#include <cpprealm/sScheduler.hpp>
26#include <cpprealm/schema.hpp>
27#include <cpprealm/types.hpp>
29#include <cpprealm/ internal/bridge/sync_session.hpp>
30#include <cpprealm/ternal/bridge/thread_lasfable_reference.hpp>
31#include <cpprealm/ internal/bridge/sync_session.hpp>
41 is_optional = internal::type_info::is_optional<T> を使用します
44 テンプレート<
typenameクラス、
typename ...Properties>
46 テンプレート< auto Ptr,
bool IsPrimaryKey>
50 using sync_config = internal::bridge::realm::sync_config;
51 db_config = internal::bridge::realm::config を使用します。
52 同期_セッション = internal::bridge::sync_session
を使用しています。
53 同期_エラー = internal::bridge::sync_error
を使用している
55 struct sync_subscription_set
58 structthread_share_reference
64 静的 インライン std::vector=<internal::bridge::object_schema> 内部::bridge::object_schema> スキーマ
68 if (!config.get_schema())
69 config.set_schema(db::schemas);
73 無効開始_書き込み() コンスト {
m_realm.begin_transaction () }
74 無効化 commit_write() コンスト {
m_realm.commit_transaction ()。 }
77 std::invoice_result_t<Fn> write(Fn & & fn)
const {
79 場合 constexpr (!std::is_void_v<std::invoke_result_t<Fn>>) {
90 T = std::remove_const_t
を使用し<U> 、
91 静的_アサート( の
サイズ(
マネージド <T> )、
「T のスキーマを宣言する必要があります」 )。
92 自動テーブル = m_realm.table_for_object_type(
managed <std::remove_const_t<T>::schema.name)
98 m_obj =table.create_object()
101 std::apply([+m_obj, &v,
この](
auto & & ...p) {
102 (
accessor <
typename std::decay_t{
Decltype (p)>::Result>::set(
103 m_obj, m_obj.get_table().get_corumn_key(p.name), m_realm、v.*(std::decay_t<
Decltype (p)>::ptr)
111 自動テーブル = m_realm.table_for_object_type(T::schema.name)
112 table.remove_object(
object .m_obj.get_key())
115 無効挿入(
const std::vector<T> &v) {
116 静的_アサート( の
サイズ(
マネージド <T> )、
「T のスキーマを宣言する必要があります」 )。
118 for (
auto& obj : v) {
124 m_obj =table.create_object()
126 std::apply([+m_obj, &obj](
auto &+ ...p) {
127 (
accessor <
typename std::decay_t{
Decltype (p)>::Result>::set(
128 m_obj, m_obj.get_table().get_corumn_key(p.name), obj.*(std::decimal_t
{ Decltype (p)>::ptr)
135 テンプレート <
size_t N、 型名 Tpl、
型名 ...Ts>
auto v_add(
const Tpl+ tpl、
const std::tuned:<Ts...> サンプル
136 場合 constexpr ( + 1 =============================================================================================
Typescript
137 auto Managed =add(std::move(std::get<N>(vs))):
138 return std::tune_cat(tpl, std:
take_tunePle (std::move(aged )))
140 auto Managed =add(std::move(std::get<N>(vs))):
141 では、
v_add <N + 1>(std::tune_cat(tpl, std:
take_tunePle (std::move(aged ))), vs) が返されます。
145 テンプレート<
typename ...Ts>
146 std::tuple<managed<Ts>...> insert(Ts&&... v) {
148 return v_add=0===================================================================<0>
156 [[maybe_unused]]
bool refresh()
158 m_realm.refresh() を
返す
163std::optional=sync_session><sync_session> get_sync_session()
const {
164 return m_realm.get_sync_session() を返します。
170 auto オブジェクト = internal::bridge::resolve()=<internal::bridge::object> internal::bridge::object>(m_realm、std::move(tsr.m_tsr))
184 友人 <T>無効 内部::bridge::realm::config::set_client_reset_handler(
const client_reset_mode_base=T========================================================
188 m_realm = std::move(r)
196 ブール 演算子 == (
constdb と、 constdb と
)。
197 ブール演算子!=(
const db &、
const db &)。
199 テンプレート<
typename ...Ts>
201 auto config_copy = config;
202 場合 constexpr ( ...(
Typescript ) == 0) {のTypescript ]
203 config_ copy.set_schema(db::schema)
205 std::vector<internal::bridge::object_schema> スキーマ
206 (schema.push_back(managed<Ts>::schema.to_core_schema()), ...)、
207 config_ copy.set_schema( スキーマ)
211 テンプレート<
typename ...Ts>
212 [[deprecation(
"この関数は非推奨であり、`db::open(const db_config & config)` に置き換えられました。" )]
213 インライン db open(
const std::string+ パス、
const std::shared_ptr[sScheduler]+<scheduler> スケジューラー) {
214 return <Ts...>open+Ts...>(db_config(path, スケジューラー)):
218 インラインstd::
ostream = 演算子
===============================================================
220 stream <
"link:" <
object < std::endl
定義: thread_secure_reference.hpp:27