#pragma once #include #include #include #pragma db namespace pointer(std::shared_ptr) \ table("ns1_") namespace ns1 { #pragma db object no_id class item_data { public: item_data(const std::shared_ptr& anchor, const std::shared_ptr& data) : m_anchor(anchor) , m_data(data) { } std::shared_ptr anchor() const { return m_anchor; } void anchor(const std::shared_ptr& anchor) { m_anchor = anchor; } std::shared_ptr data() const { return m_data; } void data(const std::shared_ptr& data) { m_data = data; } private: friend class odb::access; item_data() {} private: #pragma db not_null std::shared_ptr m_anchor; #pragma db not_null std::shared_ptr m_data; }; #pragma db view object(item_data = m) \ object(item = i : i::m_id == m::m_anchor) \ object(ns2::data = d : d::m_id == m::m_data) \ query((?), distinct) struct assembly_item_metadata_view { std::shared_ptr i; std::shared_ptr d; }; }