#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; std::string password; object::object_ptr> session; user_pk_generator() = default; user_pk_generator(std::string name, std::string password) : name(std::move(name)), password(std::move(password)) {} user_pk_generator(const unsigned int id, std::string name, std::string password) : id(id), name(std::move(name)), password(std::move(password)) {} template void process(Operator &op) { namespace field = matador::access; using namespace matador::utils; field::primary_key(op, "id", id, PkAttribute); field::attribute(op, "name", name, UniqueVarChar255); field::attribute(op, "password", password, 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_; user_session_pk_generator() = default; user_session_pk_generator(std::string session_token, object::object_ptr> user) : session_token(std::move(session_token)), user_(std::move(user)) {} user_session_pk_generator(const unsigned int id, std::string session_token, object::object_ptr> user) : id(id), session_token(std::move(session_token)), user_(std::move(user)) {} template void process(Operator &op) { namespace field = matador::access; using namespace matador::utils; field::primary_key(op, "id", id, PkAttribute); 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