#ifndef DEPARTMENT_EMPLOYEE_HPP #define DEPARTMENT_EMPLOYEE_HPP #include "matador/object/object_ptr.hpp" #include #include namespace matador::test { struct employee; struct department { department() = default; department(const unsigned int id, std::string name) : id(id), name(std::move(name)) {} unsigned int id{}; std::string name; std::vector> employees{}; // object::object_ptr manager; template void process(Operator &op) { namespace field = matador::access; field::primary_key(op, "id", id); field::attribute(op, "name", name, 63); field::has_many(op, "employees", employees, "dep_id", utils::CascadeAllFetchEager); // field::belongs_to(op, "manager_id", manager, utils::fetch_type::EAGER); } }; struct employee { employee() = default; employee(const unsigned int id, std::string first, std::string last, object::object_ptr dep) : id(id), first_name(std::move(first)), last_name(std::move(last)), dep(std::move(dep)) {} unsigned int id{}; std::string first_name; std::string last_name; object::object_ptr dep; template void process(Operator &op) { namespace field = matador::access; field::primary_key(op, "id", id); field::attribute(op, "first_name", first_name, 63); field::attribute(op, "last_name", last_name, 63); field::belongs_to(op, "dep_id", dep, utils::CascadeAllFetchLazy); } }; } #endif //DEPARTMENT_EMPLOYEE_HPP