|
- #pragma once
-
- #include <cpphibernate/config.h>
-
- #define cpphibernate_make_string(str) \
- #str
-
- #define cpphibernate_make_schema(p_name, ...) \
- cpphibernate::schema::make_schema( \
- cpphibernate_make_string(p_name), \
- cpphibernate::schema::make_tables(__VA_ARGS__))
-
- #define cpphibernate_make_table_name(p_name, p_type, p_id, ...) \
- cpphibernate::schema::make_table( \
- cpphibernate_make_string(p_name), \
- boost::hana::type_c<p_type>, \
- boost::hana::size_c<p_id>, \
- cpphibernate::schema::make_fields(__VA_ARGS__))
-
- #define cpphibernate_make_table(p_name, p_id, ...) \
- cpphibernate_make_table_name(p_name, p_name, p_id, __VA_ARGS__)
-
- #define cpphibernate_make_field_custom(p_name, p_getter, p_setter, ...) \
- cpphibernate::schema::make_field( \
- cpphibernate_make_string(p_name), \
- cpphibernate::mp::make_getter(p_getter), \
- cpphibernate::mp::make_setter(p_setter), \
- cpphibernate::schema::make_attributes(__VA_ARGS__))
-
- #define cpphibernate_make_field_name(p_name, p_member_ptr, ...) \
- cpphibernate_make_field_custom( \
- p_name, p_member_ptr, p_member_ptr, __VA_ARGS__)
-
- #define cpphibernate_make_field(p_type, p_member, ...) \
- cpphibernate_make_field_name( \
- p_member, &p_type::p_member, __VA_ARGS__)
-
- #define cpphibernate_make_id(p_member_ptr) \
- cpphibernate_make_field_name( \
- id, \
- p_member_ptr, \
- cpphibernate::schema::attribute::primary_key)
-
- #define cpphibernate_make_temp_id(p_dataset, p_value) \
- cpphibernate_make_field_custom( \
- id, \
- ::cpphibernate::mp::make_getter( \
- [](p_dataset&) { \
- return p_value { }; \
- }), \
- ::cpphibernate::mp::make_setter( \
- [](p_dataset&, p_value&&) { }), \
- cpphibernate::schema::attribute::primary_key)
|