#ifndef QUERY_ACCESS_HPP #define QUERY_ACCESS_HPP #include "matador/utils/cascade_type.hpp" #include namespace matador::utils { template < class Type, template < class ... > class ContainerType > class container; class field_attributes; namespace access { template void process(Operator &op, Type &object) { object.process(op); } template void process(Operator &op, const Type &object) { const_cast(object).process(op); } template< class Operator, class Type > void primary_key(Operator &op, const char *id, Type &value) { op.on_primary_key(id, value); } template< class Operator > void primary_key(Operator &op, const char *id, std::string &value, size_t size ) { op.on_primary_key(id, value, size); } template void revision(Operator &op, const char *id, unsigned long long &value) { op.on_revision(id, value); } template void attribute(Operator &op, const char *id, Type &value, const field_attributes &attr) { op.on_attribute(id, value, attr); } template void attribute(Operator &op, const char *id, Type &value) { op.on_attribute(id, value); } template void has_one(Operator &op, const char *id, Type &value, cascade_type cascade) { op.on_has_one(id, value, cascade); } template void belongs_to(Operator &op, const char *id, Type &value, cascade_type cascade) { op.on_belongs_to(id, value, cascade); } template class ContainerType> void has_many(Operator &op, const char *id, container &container, cascade_type cascade) { op.on_has_many(id, container, cascade); } template class ContainerType> void has_many(Operator &op, const char *id, container &container, const char *left_column, const char *right_column, cascade_type cascade) { op.on_has_many(id, container, left_column, right_column, cascade); } } } #endif //QUERY_ACCESS_HPP