37 lines
1022 B
C++
37 lines
1022 B
C++
#ifndef AUTHOR_HPP
|
|
#define AUTHOR_HPP
|
|
|
|
#include "matador/object/collection.hpp"
|
|
#include "matador/object/object_ptr.hpp"
|
|
|
|
#include "matador/utils/access.hpp"
|
|
|
|
namespace demo {
|
|
struct book;
|
|
|
|
struct author {
|
|
unsigned int id{};
|
|
std::string first_name;
|
|
std::string last_name;
|
|
std::string date_of_birth;
|
|
unsigned short year_of_birth{};
|
|
bool distinguished{false};
|
|
matador::object::collection<matador::object::object_ptr<book>> books;
|
|
|
|
|
|
template<typename Operator>
|
|
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::attribute( op, "date_of_birth", date_of_birth, 31 );
|
|
field::attribute( op, "year_of_birth", year_of_birth );
|
|
field::attribute( op, "distinguished", distinguished );
|
|
field::has_many( op, "books", books, "author_id" );
|
|
}
|
|
};
|
|
}
|
|
|
|
#endif //AUTHOR_HPP
|