#ifndef QUERY_ACCESS_HPP #define QUERY_ACCESS_HPP #include #include namespace matador::utils { template < class Type, template < class ... > class ContainerType > class container; class field_attributes; class foreign_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, std::optional &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, const foreign_attributes &attr) { op.on_has_one(id, value, attr); } template void belongs_to(Operator &op, const char *id, Type &value, const foreign_attributes &attr) { op.on_belongs_to(id, value, attr); } template class ContainerType> void has_many(Operator &op, ContainerType &container, const char *join_column, const foreign_attributes &attr) { op.on_has_many(container, join_column, attr); } template class ContainerType> void has_many_to_many(Operator &op, const char *id, ContainerType &container, const char *join_column, const char *inverse_join_column, const foreign_attributes &attr) { op.on_has_many_to_many(id, container, join_column, inverse_join_column, attr); } template class ContainerType> void has_many_to_many(Operator &op, const char *id, ContainerType &container, const foreign_attributes &attr) { op.on_has_many_to_many(id, container, attr); } } } #endif //QUERY_ACCESS_HPP