19#ifndef CPPREALM_ACCESSORS_HPP
20CPREALM_ACCESSORS_HPP を定義する
22#include <cpprealm/ internal/bridge/lnklst.hpp>
23#include <cpprealm/ internal/bridge/obj.hpp>
24#include <cpprealm/ internal/bridge/realm.hpp>
25#include <cpprealm/ internal/bridge/table.hpp>
26#include <cpprealm/types.hpp>
32 テンプレート<
typename T,
typename =
string >
45 const int 64 _t & 値){{
50 構造体 accessor <std::optional=int 64 _t==========================
54 const std::optional{int 64 _t>+ 値){{
76 const std::optional[double]+<double> 値){{
94 構造体 accessor <std::optional=bool=======================================<bool>
98 const std::optional[] および<bool> 値){{
114 obj.set(key,
static_ Cast < int 64 _t
> (値))
118 構造体 accessor <T, std::enable_if_t=std::conjection_v=期間::type_info::is_optional=====================================================================<T><typename T::value_type>
124 obj.set(key,
static_ Cast < int 64 _t
> (*値))
137 obj.set(キー, シリアル化(値))
152 構造体 accessor <std::optional=uuid============================<uuid>
156 const std::optional[]<uuid> 値){{
174 構造体 accessor <std::optional=object_id====================<object_id>
178 const std::optional[object_id]>+<object_id> 値){{
201 const std::optional 128 >+ 値){
211 構造体 accessor <std::chrono::time_point=std::chronno::system_クロック==========================================<std::chrono::system_clock>
215 const std::chrono::time_point<std::chrono::system_clock> + 値){{
220 構造体 accessor <std::optional=std::chrono::time_point=std::chrono::system_lock=======================================================<std::chrono::system_clock>
224 const std::optional未満<std::chrono::system_clock>
238 const std::string & 値){{
243 構造体 accessor <std::string><std::optional=std::string> {
247 const std::optional{std::string>+<std::string> 値){
257 構造体 accessor <std:: 8 ======================================================================
261 const std::vector 8 _t>+ 値){{
266 構造体 accessor <std::optional 8 std::vector==========================================================================
270 const std::optional 8 std::vector======================================================================================
279 構造体 accessor <std::vector=T================================<T>
283 const std::vector以前と値){{<T>
284 obj.set_list_values(key, value);
288 構造体 accessor <std::vector=========================================
292 const std::vector<T*> & 値){{
293 自動リスト =obj.get_linklist(key)
294 の場合(
size_t i = 0 、i < value.size()、 i++) {
295 auto& lnk = value[i];
299 auto table = obj.get_target_table(key);
(
マネージド <T, 無効>::schema304 .is_ embedded())
場合 は、 }{
305 m_obj = list.create_and_insert_linked_object(i)
307 m_obj =table.create_object()
309 std::apply([&m_obj, &lnk, &realm](
auto && ...p) {
310 (
accessor <
typename std::decay_t{
Decltype (p)>::Result>::set(
311 m_obj, m_obj.get_table().get_corumn_key(p.name), 邦土
312 (*link).*(std::decimal_t{
Decimaltype (p)>::ptr)), ...)、
315 list.add(m_obj.get_key())
325 const std::set<T>+ 値){
327 の(
const auto & v : 値){
328 set.insert(serialize(v))
333 構造体 accessor <std::set=T*==========================
337 const std::set< T*>+ 値){{
339 の(
const auto & Link : 値){
343 auto table = obj.get_target_table(key);
349 m_obj =table.create_object()
351 std::apply([&m_obj, &lnk, &realm](
auto && ...p) {
352 (
accessor <
typename std::decay_t{
Decltype (p)>::Result>::set(
353 m_obj, m_obj.get_table().get_corumn_key(p.name), 邦土
354 (*link).*(std::decimal_t{
Decimaltype (p)>::ptr)), ...)、
357 set.insert(m_obj.get_key())
367 const std::map{std::string, T>+ 値){
368 auto d =obj.get_Dictionary(key)
370 場合 constexpr (内部::type_info::MixedPersistableConcern<T>::value) {
371 d.insert(k, std::visit([](
自動および arg) {
377 場合 constexpr (std::is_enum_v<typename T::value_type>) {
379d.insert(k,
static_host (typename) std::current_type[typename<typename T::value_type> T::value_type]::type
> (*v):
400 const std::map=std::string, T*>= 値){{
401 auto d =obj.get_Dictionary(key)
407 m_obj = d.create_and_insert_linked_object(k, pk.value)、
409 m_obj = d.create_and_insert_linked_object(k)
411 std::apply([+m_obj, &realm, op = *v](
auto & & ...p) {
412 (
accessor <
typename std::decay_t{
Decltype (p)>::Result>::set(
413 m_obj, m_obj.get_table().get_corumn_key(p.name), 邦土
414 op.*(std::decay_t{
Decltype (p)>::ptr), ...):
416 d.insert(k, m_obj.get_key());
434 auto table = obj.get_target_table(key);
439 obj.set(key, m_obj.get_key());
(
マネージド <T, 無効>::schema440 .is_ embedded())
場合 は、 }{
441 m_obj =obj.create_and_set_linked_object(key)
443 m_obj =table.create_object()
444 obj.set(key, m_obj.get_key());
446 std::apply([+m_obj, &realm, &values](
auto & & ...p) {
447 (
accessor <
typename std::decay_t{
Decltype (p)>::Result>::set(
448 m_obj, m_obj.get_table().get_corumn_key(p.name), 邦土
449 (*値).*(std::decimal_t<
Decltype (p)>::ptr)), ...)、
469 場合 constexpr (std::is_enum_v<T>) {
470 obj.set(key,
static_ Cast < int 64 _t
> (value.value))
472 obj.set(key, value.value);
定義: Managed_primary_key.happ:30