#ifndef QUERY_HAS_MANY_TO_MANY_RELATION_HPP #define QUERY_HAS_MANY_TO_MANY_RELATION_HPP #include "matador/sql/entity.hpp" #include "matador/utils/access.hpp" #include "matador/utils/foreign_attributes.hpp" namespace matador::sql { template < class LocalType, class ForeignType > class has_many_to_many_relation { public: has_many_to_many_relation() = default; has_many_to_many_relation(std::string local_name, std::string remote_name) : local_name_(std::move(local_name)) , remote_name_(std::move(remote_name)) {} template void process(Operator &op) { namespace field = matador::utils::access; field::belongs_to(op, local_name_.c_str(), local_, utils::default_foreign_attributes); field::belongs_to(op, remote_name_.c_str(), remote_, utils::default_foreign_attributes); } entity local() const { return local_; } entity remote() const { return remote_; } private: std::string local_name_; std::string remote_name_; sql::entity local_; sql::entity remote_; }; } #endif //QUERY_HAS_MANY_TO_MANY_RELATION_HPP