introduced field_attributes shortcuts and added method on_base() to all processor classes
This commit is contained in:
@@ -53,12 +53,12 @@ void revision(Operator &op, const char *id, uint64_t &value) {
|
||||
}
|
||||
|
||||
template<class Operator, class Type>
|
||||
void attribute(Operator &op, const char *id, Type &value, const utils::field_attributes &attr = utils::NullAttributes) {
|
||||
void attribute(Operator &op, const char *id, Type &value, const utils::field_attributes &attr = NullAttributes) {
|
||||
op.on_attribute(id, value, attr);
|
||||
}
|
||||
|
||||
template<class Operator, class Type>
|
||||
void attribute(Operator &op, const char *id, std::optional<Type> &value, const utils::field_attributes &attr = utils::NullAttributes) {
|
||||
void attribute(Operator &op, const char *id, std::optional<Type> &value, const utils::field_attributes &attr = NullAttributes) {
|
||||
op.on_attribute(id, value, attr);
|
||||
}
|
||||
|
||||
|
||||
@@ -73,8 +73,31 @@ private:
|
||||
size_t size_ = 0;
|
||||
constraints options_ = constraints::None;
|
||||
};
|
||||
|
||||
const field_attributes NullAttributes {};
|
||||
|
||||
}
|
||||
|
||||
namespace matador {
|
||||
const utils::field_attributes NullAttributes {};
|
||||
const utils::field_attributes VarChar63 {63};
|
||||
const utils::field_attributes VarChar127 {127};
|
||||
const utils::field_attributes VarChar255 {255};
|
||||
const utils::field_attributes VarChar511 {511};
|
||||
const utils::field_attributes VarChar1023 {1023};
|
||||
const utils::field_attributes VarChar2047 {2047};
|
||||
const utils::field_attributes VarChar4095 {4095};
|
||||
const utils::field_attributes UniqueVarChar63 {63, utils::constraints::Unique};
|
||||
const utils::field_attributes UniqueVarChar127 {127, utils::constraints::Unique};
|
||||
const utils::field_attributes UniqueVarChar255 {255, utils::constraints::Unique};
|
||||
const utils::field_attributes UniqueVarChar511 {511, utils::constraints::Unique};
|
||||
const utils::field_attributes UniqueVarChar1023 {1023, utils::constraints::Unique};
|
||||
const utils::field_attributes UniqueVarChar2047 {2047, utils::constraints::Unique};
|
||||
const utils::field_attributes UniqueVarChar4095 {4095, utils::constraints::Unique};
|
||||
const utils::field_attributes PrimaryKeyVarChar63 {63, utils::constraints::PrimaryKey};
|
||||
const utils::field_attributes PrimaryKeyVarChar127 {127, utils::constraints::PrimaryKey};
|
||||
const utils::field_attributes PrimaryKeyVarChar255 {255, utils::constraints::PrimaryKey};
|
||||
const utils::field_attributes PrimaryKeyVarChar511 {511, utils::constraints::PrimaryKey};
|
||||
const utils::field_attributes PrimaryKeyVarChar1023 {1023, utils::constraints::PrimaryKey};
|
||||
const utils::field_attributes PrimaryKeyVarChar2047 {2047, utils::constraints::PrimaryKey};
|
||||
const utils::field_attributes PrimaryKeyVarChar4095 {4095, utils::constraints::PrimaryKey};
|
||||
}
|
||||
|
||||
#endif //MATADOR_FIELD_ATTRIBUTES_HPP
|
||||
|
||||
@@ -21,6 +21,8 @@ public:
|
||||
access::process(*this, obj);
|
||||
}
|
||||
|
||||
template<typename BaseType>
|
||||
static void on_base(const BaseType&) {}
|
||||
template<typename PrimaryKeyType>
|
||||
void on_primary_key(const char * /*id*/, PrimaryKeyType &pk, const primary_key_attribute & = DefaultPkAttributes) {
|
||||
const auto value = pk_.as<PrimaryKeyType>();
|
||||
@@ -51,6 +53,8 @@ private:
|
||||
struct pk_unset_checker {
|
||||
bool unset{true};
|
||||
|
||||
template<typename BaseType>
|
||||
static void on_base(const BaseType&) {}
|
||||
template<class PrimaryKeyType>
|
||||
void on_primary_key(const char * /*id*/, PrimaryKeyType &pk, const primary_key_attribute & = DefaultPkAttributes) {
|
||||
unset = !identifier_type_traits<PrimaryKeyType>::is_valid(pk);
|
||||
@@ -73,6 +77,8 @@ struct pk_unset_checker {
|
||||
struct primary_key_getter {
|
||||
std::uint64_t value{0};
|
||||
|
||||
template<typename BaseType>
|
||||
static void on_base(const BaseType&) {}
|
||||
template<class PrimaryKeyType>
|
||||
void on_primary_key(const char * /*id*/, PrimaryKeyType &pk, const primary_key_attribute & = DefaultPkAttributes) {
|
||||
pk_ = pk;
|
||||
|
||||
@@ -48,6 +48,13 @@ private:
|
||||
};
|
||||
|
||||
const primary_key_attribute DefaultPkAttributes {};
|
||||
const primary_key_attribute ManualVarChar63 {63};
|
||||
const primary_key_attribute ManualVarChar127 {127};
|
||||
const primary_key_attribute ManualVarChar255 {255};
|
||||
const primary_key_attribute ManualVarChar511 {511};
|
||||
const primary_key_attribute ManualVarChar1023 {1023};
|
||||
const primary_key_attribute ManualVarChar2047 {2047};
|
||||
const primary_key_attribute ManualVarChar4095 {4095};
|
||||
|
||||
}
|
||||
#endif //PRIMARY_KEY_ATTRIBUTE_HPP
|
||||
|
||||
Reference in New Issue
Block a user