#ifndef MATADOR_USER_HPP #define MATADOR_USER_HPP #include "matador/utils/access.hpp" #include "matador/object/object_ptr.hpp" #include namespace matador::test { template struct user_session_pk_generator; template struct user_pk_generator { unsigned int id{}; std::string name; object::object_ptr> session; template void process(Operator &op) { namespace field = matador::access; using namespace matador::utils; field::primary_key(op, "id", id); field::attribute(op, "name", name, UniqueVarChar255); field::has_one(op, "session", session, CascadeAllFetchLazy); } }; template struct user_session_pk_generator { unsigned int id{}; std::string session_token; object::object_ptr> user_; template void process(Operator &op) { namespace field = matador::access; using namespace matador::utils; field::primary_key(op, "id", id); field::attribute(op, "session_token", session_token, VarChar255); field::belongs_to(op, "user_id", user_, CascadeAllFetchLazy); } }; using user = user_pk_generator; using user_identity = user_pk_generator; using user_sequence = user_pk_generator; using user_table = user_pk_generator; using user_session = user_session_pk_generator; using user_session_identity = user_session_pk_generator; using user_session_sequence = user_session_pk_generator; using user_session_table = user_session_pk_generator; } #endif //MATADOR_USER_HPP