removed unused on_attribute overloads

This commit is contained in:
Sascha Kühl 2026-04-03 19:46:53 +02:00
parent f4e984a288
commit 9e4660c4ee
33 changed files with 126 additions and 165 deletions

View File

@ -281,7 +281,7 @@ utils::result<std::vector<object::attribute>, utils::error> postgres_connection:
null_opt = object::null_option_type::NotNull; null_opt = object::null_option_type::NotNull;
} }
// f.default_value(res->column(4)); // f.default_value(res->column(4));
prototype.emplace_back(name, type, utils::null_attributes, null_opt); prototype.emplace_back(name, type, utils::NullAttributes, null_opt);
} }
return utils::ok(prototype); return utils::ok(prototype);

View File

@ -29,7 +29,7 @@ public:
attribute() = default; attribute() = default;
attribute(std::string name, attribute(std::string name,
utils::basic_type type, utils::basic_type type,
const utils::field_attributes& opts = utils::null_attributes, const utils::field_attributes& opts = utils::NullAttributes,
null_option_type null_opt = null_option_type::NotNull) null_option_type null_opt = null_option_type::NotNull)
: name_(std::move(name)), type_(type), options_(opts), null_option_type_(null_opt) {} : name_(std::move(name)), type_(type), options_(opts), null_option_type_(null_opt) {}

View File

@ -28,7 +28,7 @@ public:
attribute() = default; attribute() = default;
attribute(std::string name, attribute(std::string name,
utils::basic_type type, utils::basic_type type,
const utils::field_attributes &attr = utils::null_attributes, const utils::field_attributes &attr = utils::NullAttributes,
null_option_type null_opt = null_option_type::NotNull); null_option_type null_opt = null_option_type::NotNull);
[[nodiscard]] const std::string& name() const; [[nodiscard]] const std::string& name() const;
@ -39,9 +39,9 @@ public:
[[nodiscard]] bool is_nullable() const; [[nodiscard]] bool is_nullable() const;
[[nodiscard]] utils::basic_type type() const; [[nodiscard]] utils::basic_type type() const;
[[nodiscard]] std::shared_ptr<object> owner() const; [[nodiscard]] std::shared_ptr<object> owner() const;
void change_type(utils::basic_type type, const utils::field_attributes &attr = utils::null_attributes); void change_type(utils::basic_type type, const utils::field_attributes &attr = utils::NullAttributes);
template < typename Type > template < typename Type >
void change_type(const utils::field_attributes &attr = utils::null_attributes) { void change_type(const utils::field_attributes &attr = utils::NullAttributes) {
type_ = utils::data_type_traits<Type>::type(attr.size()); type_ = utils::data_type_traits<Type>::type(attr.size());
} }

View File

@ -39,12 +39,12 @@ public:
} }
template<class PrimaryKeyType> template<class PrimaryKeyType>
static void on_primary_key(const char * /*id*/, PrimaryKeyType &/*pk*/, const utils::primary_key_attribute & /*attr*/ = utils::default_pk_attributes) {} static void on_primary_key(const char * /*id*/, PrimaryKeyType &/*pk*/, const utils::primary_key_attribute & /*attr*/) {}
static void on_revision(const char * /*id*/, uint64_t &/*rev*/) {} static void on_revision(const char * /*id*/, uint64_t &/*rev*/) {}
template<typename AttributeType> template<typename AttributeType>
static void on_attribute(const char * /*id*/, AttributeType &/*val*/, const utils::field_attributes &/*attr*/ = utils::null_attributes) {} static void on_attribute(const char * /*id*/, AttributeType &/*val*/, const utils::field_attributes &/*attr*/) {}
template<typename AttributeType> template<typename AttributeType>
static void on_attribute(const char * /*id*/, std::optional<AttributeType> &/*val*/, const utils::field_attributes &/*attr*/ = utils::null_attributes) {} static void on_attribute(const char * /*id*/, std::optional<AttributeType> &/*val*/, const utils::field_attributes &/*attr*/) {}
template<class ForeignPointerType> template<class ForeignPointerType>
void on_belongs_to(const char *id, ForeignPointerType &/*obj*/, const utils::foreign_attributes &/*attr*/); void on_belongs_to(const char *id, ForeignPointerType &/*obj*/, const utils::foreign_attributes &/*attr*/);
template<class ForeignPointerType> template<class ForeignPointerType>

View File

@ -25,10 +25,10 @@ public:
return join_columns_; return join_columns_;
} }
template < class V > template < class V >
static void on_primary_key(const char * /*id*/, V &, const utils::primary_key_attribute& /*attr*/ = utils::default_pk_attributes) {} static void on_primary_key(const char * /*id*/, V &, const utils::primary_key_attribute& /*attr*/) {}
static void on_revision(const char * /*id*/, uint64_t &/*rev*/) {} static void on_revision(const char * /*id*/, uint64_t &/*rev*/) {}
template<typename Type> template<typename Type>
static void on_attribute(const char * /*id*/, Type &, const utils::field_attributes &/*attr*/ = utils::null_attributes) {} static void on_attribute(const char * /*id*/, Type &, const utils::field_attributes &/*attr*/) {}
template<class Pointer> template<class Pointer>
static void on_belongs_to(const char * /*id*/, Pointer &/*obj*/, const utils::foreign_attributes &/*attr*/) {} static void on_belongs_to(const char * /*id*/, Pointer &/*obj*/, const utils::foreign_attributes &/*attr*/) {}
template<class Pointer> template<class Pointer>

View File

@ -25,13 +25,13 @@ public:
} }
template<typename ValueType> template<typename ValueType>
void on_primary_key(const char *, ValueType &/*pk*/, const utils::primary_key_attribute& attr = utils::default_pk_attributes) { void on_primary_key(const char *, ValueType &/*pk*/, const utils::primary_key_attribute& attr) {
type_ = utils::data_type_traits<ValueType>::type(attr.size()); type_ = utils::data_type_traits<ValueType>::type(attr.size());
} }
static void on_revision(const char * /*id*/, uint64_t &/*rev*/) {} static void on_revision(const char * /*id*/, uint64_t &/*rev*/) {}
template < class Type > template < class Type >
static void on_attribute(const char * /*id*/, Type &/*x*/, const utils::field_attributes &/*attr*/ = utils::null_attributes) {} static void on_attribute(const char * /*id*/, Type &/*x*/, const utils::field_attributes &/*attr*/) {}
static void on_attribute(const char * /*id*/, char * /*x*/, const utils::field_attributes &/*attr*/ = utils::null_attributes) {} static void on_attribute(const char * /*id*/, char * /*x*/, const utils::field_attributes &/*attr*/) {}
template<class Pointer> template<class Pointer>
static void on_belongs_to(const char * /*id*/, Pointer &/*x*/, const utils::foreign_attributes &/*attr*/) {} static void on_belongs_to(const char * /*id*/, Pointer &/*x*/, const utils::foreign_attributes &/*attr*/) {}
template<class Pointer> template<class Pointer>
@ -75,14 +75,14 @@ public:
} }
template < class Type > template < class Type >
void on_primary_key(const char *, Type &x, const utils::primary_key_attribute& attr = utils::default_pk_attributes); void on_primary_key(const char *, Type &x, const utils::primary_key_attribute& attr);
void on_revision(const char *id, uint64_t &rev); void on_revision(const char *id, uint64_t &rev);
template<typename Type> template<typename Type>
void on_attribute(const char *id, Type &x, const utils::field_attributes &attr = utils::null_attributes); void on_attribute(const char *id, Type &x, const utils::field_attributes &attr);
template<typename Type> template<typename Type>
void on_attribute(const char *id, std::optional<Type> &x, const utils::field_attributes &attr = utils::null_attributes); void on_attribute(const char *id, std::optional<Type> &x, const utils::field_attributes &attr);
template<class Pointer> template<class Pointer>
void on_belongs_to(const char *id, Pointer &x, const utils::foreign_attributes &/*attr*/) { void on_belongs_to(const char *id, Pointer &x, const utils::foreign_attributes &/*attr*/) {

View File

@ -35,7 +35,7 @@ struct pk_field_locator {
: base(&obj) {} : base(&obj) {}
template <typename PrimaryKeyType> template <typename PrimaryKeyType>
void on_primary_key(const char *, PrimaryKeyType &pk, const utils::primary_key_attribute & = utils::default_pk_attributes) { void on_primary_key(const char *, PrimaryKeyType &pk, const utils::primary_key_attribute & /*attr*/) {
// Offset bestimmen // Offset bestimmen
const auto* obj_bytes = reinterpret_cast<std::uint8_t*>(base); const auto* obj_bytes = reinterpret_cast<std::uint8_t*>(base);
const auto* pk_bytes = reinterpret_cast<std::uint8_t*>(&pk); const auto* pk_bytes = reinterpret_cast<std::uint8_t*>(&pk);
@ -113,7 +113,7 @@ struct pk_field_locator {
} }
static void on_revision(const char *, std::uint64_t &) {} static void on_revision(const char *, std::uint64_t &) {}
template <typename V> template <typename V>
static void on_attribute(const char *, V &, const utils::field_attributes & = matador::utils::null_attributes) {} static void on_attribute(const char *, V &, const utils::field_attributes &/*attr*/) {}
template <typename Pointer> template <typename Pointer>
static void on_belongs_to(const char *, Pointer &, const utils::foreign_attributes &) {} static void on_belongs_to(const char *, Pointer &, const utils::foreign_attributes &) {}
template <typename Pointer> template <typename Pointer>

View File

@ -44,7 +44,7 @@ public:
} }
template < class Type > template < class Type >
void on_primary_key(const char *id, Type &pk, const utils::primary_key_attribute& attr = utils::default_pk_attributes) { void on_primary_key(const char *id, Type &pk, const utils::primary_key_attribute& attr) {
primary_key_info_.pk_column_name = id; primary_key_info_.pk_column_name = id;
primary_key_info_.type = utils::data_type_traits<Type>::type(attr.size()); primary_key_info_.type = utils::data_type_traits<Type>::type(attr.size());
primary_key_info_.pk = pk; primary_key_info_.pk = pk;
@ -52,7 +52,7 @@ public:
static void on_revision(const char * /*id*/, uint64_t &/*rev*/) {} static void on_revision(const char * /*id*/, uint64_t &/*rev*/) {}
template<typename Type> template<typename Type>
static void on_attribute(const char * /*id*/, Type &/*val*/, const utils::field_attributes &/*attr*/ = utils::null_attributes) {} static void on_attribute(const char * /*id*/, Type &/*val*/, const utils::field_attributes &/*attr*/) {}
template<class Pointer> template<class Pointer>
static void on_belongs_to(const char * /*id*/, Pointer &/*val*/, const utils::foreign_attributes &/*attr*/) {} static void on_belongs_to(const char * /*id*/, Pointer &/*val*/, const utils::foreign_attributes &/*attr*/) {}
template<class Pointer> template<class Pointer>

View File

@ -29,12 +29,12 @@ public:
} }
template<class PrimaryKeyType> template<class PrimaryKeyType>
static void on_primary_key(const char * /*id*/, PrimaryKeyType &/*pk*/, const utils::primary_key_attribute& /*attr*/ = utils::default_pk_attributes) {} static void on_primary_key(const char * /*id*/, PrimaryKeyType &/*pk*/, const utils::primary_key_attribute& /*attr*/) {}
static void on_revision(const char * /*id*/, uint64_t &/*rev*/) {} static void on_revision(const char * /*id*/, uint64_t &/*rev*/) {}
template<typename AttributeType> template<typename AttributeType>
static void on_attribute(const char * /*id*/, AttributeType &/*val*/, const utils::field_attributes &/*attr*/ = utils::null_attributes) {} static void on_attribute(const char * /*id*/, AttributeType &/*val*/, const utils::field_attributes &/*attr*/) {}
template<typename AttributeType> template<typename AttributeType>
static void on_attribute(const char * /*id*/, std::optional<AttributeType> &/*val*/, const utils::field_attributes &/*attr*/ = utils::null_attributes) {} static void on_attribute(const char * /*id*/, std::optional<AttributeType> &/*val*/, const utils::field_attributes &/*attr*/) {}
template<class ForeignPointerType> template<class ForeignPointerType>
void on_belongs_to(const char *id, ForeignPointerType &/*obj*/, const utils::foreign_attributes &/*attr*/) { void on_belongs_to(const char *id, ForeignPointerType &/*obj*/, const utils::foreign_attributes &/*attr*/) {
@ -103,12 +103,12 @@ public:
} }
template<class PrimaryKeyType> template<class PrimaryKeyType>
static void on_primary_key(const char * /*id*/, PrimaryKeyType &/*pk*/, const utils::primary_key_attribute& /*attr*/ = utils::default_pk_attributes) {} static void on_primary_key(const char * /*id*/, PrimaryKeyType &/*pk*/, const utils::primary_key_attribute& /*attr*/) {}
static void on_revision(const char * /*id*/, uint64_t &/*rev*/) {} static void on_revision(const char * /*id*/, uint64_t &/*rev*/) {}
template<typename AttributeType> template<typename AttributeType>
static void on_attribute(const char * /*id*/, AttributeType &/*val*/, const utils::field_attributes &/*attr*/ = utils::null_attributes) {} static void on_attribute(const char * /*id*/, AttributeType &/*val*/, const utils::field_attributes &/*attr*/) {}
template<typename AttributeType> template<typename AttributeType>
static void on_attribute(const char * /*id*/, std::optional<AttributeType> &/*val*/, const utils::field_attributes &/*attr*/ = utils::null_attributes) {} static void on_attribute(const char * /*id*/, std::optional<AttributeType> &/*val*/, const utils::field_attributes &/*attr*/) {}
template<class ForeignPointerType> template<class ForeignPointerType>
void on_belongs_to(const char *id, ForeignPointerType &obj, const utils::foreign_attributes &attr); void on_belongs_to(const char *id, ForeignPointerType &obj, const utils::foreign_attributes &attr);

View File

@ -179,7 +179,7 @@ public:
} }
template<class Type> template<class Type>
void on_primary_key(const char * /*id*/, Type &x, const utils::primary_key_attribute & /*attr*/ = utils::default_pk_attributes) { void on_primary_key(const char * /*id*/, Type &x, const utils::primary_key_attribute & /*attr*/) {
stmt_.bind(binding_position_, x); stmt_.bind(binding_position_, x);
} }
@ -187,17 +187,17 @@ public:
} }
template<class Type> template<class Type>
static void on_attribute(const char * /*id*/, Type &/*x*/, const utils::field_attributes &/*attr*/ = utils::null_attributes) {} static void on_attribute(const char * /*id*/, Type &/*x*/, const utils::field_attributes &/*attr*/) {}
template<class Pointer> template<class Pointer>
static void on_belongs_to(const char * /*id*/, Pointer &/*x*/, const utils::foreign_attributes &/*attr*/ = utils::CascadeNoneFetchLazy) {} static void on_belongs_to(const char * /*id*/, Pointer &/*x*/, const utils::foreign_attributes &/*attr*/) {}
template<class Pointer> template<class Pointer>
static void on_has_one(const char * /*id*/, Pointer &/*x*/, const utils::foreign_attributes &/*attr*/ = utils::CascadeNoneFetchLazy) {} static void on_has_one(const char * /*id*/, Pointer &/*x*/, const utils::foreign_attributes &/*attr*/) {}
template<class ContainerType> template<class ContainerType>
static void on_has_many(const char * /*id*/, static void on_has_many(const char * /*id*/,
ContainerType &/*c*/, ContainerType &/*c*/,
const char * /*join_column*/, const char * /*join_column*/,
const utils::foreign_attributes &/*attr*/ = utils::CascadeNoneFetchLazy) {} const utils::foreign_attributes &/*attr*/) {}
template<class ContainerType> template<class ContainerType>
static void on_has_many_to_many(const char * /*id*/, static void on_has_many_to_many(const char * /*id*/,

View File

@ -41,12 +41,12 @@ public:
return generator_type_; return generator_type_;
} }
template<class V> template<class V>
void on_primary_key(const char * /*id*/, V &/*pk*/, const utils::primary_key_attribute &attr = utils::default_pk_attributes) { void on_primary_key(const char * /*id*/, V &/*pk*/, const utils::primary_key_attribute &attr) {
generator_type_ = attr.generator(); generator_type_ = attr.generator();
} }
static void on_revision(const char * /*id*/, uint64_t & /*rev*/) {} static void on_revision(const char * /*id*/, uint64_t & /*rev*/) {}
template<typename T> template<typename T>
static void on_attribute(const char * /*id*/, T &, const utils::field_attributes & = utils::null_attributes) {} static void on_attribute(const char * /*id*/, T &, const utils::field_attributes &/*attr*/) {}
template<class P> template<class P>
static void on_belongs_to(const char * /*id*/, P &, const utils::foreign_attributes & ) {} static void on_belongs_to(const char * /*id*/, P &, const utils::foreign_attributes & ) {}
template<class P> template<class P>

View File

@ -60,15 +60,15 @@ struct dependency_collector {
std::vector<fk_ref> refs; std::vector<fk_ref> refs;
template<class V> template<class V>
static void on_primary_key(const char*, V&, const utils::primary_key_attribute& /*attr*/ = utils::default_pk_attributes) {} static void on_primary_key(const char*, V&, const utils::primary_key_attribute& /*attr*/) {}
static void on_revision(const char*, std::uint64_t&) {} static void on_revision(const char*, std::uint64_t&) {}
template<class V> template<class V>
static void on_attribute(const char*, V&, const utils::field_attributes &/*attr*/ = utils::null_attributes) {} static void on_attribute(const char*, V&, const utils::field_attributes &/*attr*/) {}
template<class Pointer> template<class Pointer>
void on_belongs_to(const char* id, Pointer& p, utils::foreign_attributes &attr) { void on_belongs_to(const char* id, Pointer& p, utils::foreign_attributes &/*attr*/) {
// Erwartung: Pointer verhält sich wie matador::object::object_ptr<T> // Erwartung: Pointer verhält sich wie matador::object::object_ptr<T>
// also: p.get() liefert raw ptr, und Pointer::value_type / element_type ist T. // also: p.get() liefert raw ptr, und Pointer::value_type / element_type ist T.
auto* raw = p.get(); auto* raw = p.get();

View File

@ -25,13 +25,13 @@ public:
} }
template<typename ValueType> template<typename ValueType>
void on_primary_key(const char *, ValueType &pk, const utils::primary_key_attribute& /*attr*/ = utils::default_pk_attributes) { void on_primary_key(const char *, ValueType &pk, const utils::primary_key_attribute& /*attr*/) {
value_ = pk; value_ = pk;
} }
static void on_revision(const char * /*id*/, uint64_t &/*rev*/) {} static void on_revision(const char * /*id*/, uint64_t &/*rev*/) {}
template < class Type > template < class Type >
static void on_attribute(const char * /*id*/, Type &/*x*/, const utils::field_attributes &/*attr*/ = utils::null_attributes) {} static void on_attribute(const char * /*id*/, Type &/*x*/, const utils::field_attributes &/*attr*/) {}
static void on_attribute(const char * /*id*/, char * /*x*/, const utils::field_attributes &/*attr*/ = utils::null_attributes) {} static void on_attribute(const char * /*id*/, char * /*x*/, const utils::field_attributes &/*attr*/) {}
template<class Pointer> template<class Pointer>
static void on_belongs_to(const char * /*id*/, Pointer &/*x*/, const utils::foreign_attributes &/*attr*/) {} static void on_belongs_to(const char * /*id*/, Pointer &/*x*/, const utils::foreign_attributes &/*attr*/) {}
template<class Pointer> template<class Pointer>

View File

@ -64,13 +64,13 @@ public:
} }
template < class V > template < class V >
void on_primary_key(const char *id, V &, const utils::primary_key_attribute& /*attr*/ = utils::default_pk_attributes) { void on_primary_key(const char *id, V &, const utils::primary_key_attribute& /*attr*/) {
push(id); push(id);
} }
void on_revision(const char *id, uint64_t &/*rev*/); void on_revision(const char *id, uint64_t &/*rev*/);
template<typename Type> template<typename Type>
void on_attribute(const char *id, Type &, const utils::field_attributes &/*attr*/ = utils::null_attributes) { void on_attribute(const char *id, Type &, const utils::field_attributes &/*attr*/) {
push(id); push(id);
} }
@ -105,7 +105,7 @@ public:
} }
template<class CollectionType> template<class CollectionType>
void on_has_many(const char * /*id*/, CollectionType &, const char *join_column, const utils::foreign_attributes &attr, std::enable_if_t<!object::is_object_ptr<typename CollectionType::value_type>::value> * = nullptr) { void on_has_many(const char * /*id*/, CollectionType &, const char * /*join_column*/, const utils::foreign_attributes &/*attr*/, std::enable_if_t<!object::is_object_ptr<typename CollectionType::value_type>::value> * = nullptr) {
} }
template<class ContainerType> template<class ContainerType>
@ -170,13 +170,13 @@ public:
} }
template < class V > template < class V >
void on_primary_key(const char * /*id*/, V &/*x*/, const utils::primary_key_attribute& /*attr*/ = utils::default_pk_attributes) { void on_primary_key(const char * /*id*/, V &/*x*/, const utils::primary_key_attribute& /*attr*/) {
result_.emplace_back(utils::_); result_.emplace_back(utils::_);
} }
void on_revision(const char *id, uint64_t &/*rev*/); void on_revision(const char *id, uint64_t &/*rev*/);
template<typename Type> template<typename Type>
void on_attribute(const char * /*id*/, Type &/*x*/, const utils::field_attributes &/*attr*/ = utils::null_attributes) { void on_attribute(const char * /*id*/, Type &/*x*/, const utils::field_attributes &/*attr*/) {
result_.emplace_back(utils::_); result_.emplace_back(utils::_);
} }
@ -228,13 +228,13 @@ public:
} }
template < class V > template < class V >
void on_primary_key(const char *id, V &x, const utils::primary_key_attribute& /*attr*/ = utils::default_pk_attributes) { void on_primary_key(const char *id, V &x, const utils::primary_key_attribute& /*attr*/) {
push_back(id, x); push_back(id, x);
} }
void on_revision(const char *id, uint64_t &/*rev*/); void on_revision(const char *id, uint64_t &/*rev*/);
template<typename Type> template<typename Type>
void on_attribute(const char *id, Type &x, const utils::field_attributes &/*attr*/ = utils::null_attributes) { void on_attribute(const char *id, Type &x, const utils::field_attributes &/*attr*/) {
push_back(id, x); push_back(id, x);
} }

View File

@ -13,14 +13,14 @@ struct pk_setter {
std::uint64_t value; std::uint64_t value;
template<class V> template<class V>
void on_primary_key(const char *id, V &pk, const utils::primary_key_attribute & = utils::default_pk_attributes) { void on_primary_key(const char *id, V &pk, const utils::primary_key_attribute &/*attr*/) {
if (id != nullptr && name == id) { if (id != nullptr && name == id) {
pk = static_cast<V>(value); pk = static_cast<V>(value);
} }
} }
static void on_revision(const char * /*id*/, uint64_t & /*rev*/) {} static void on_revision(const char * /*id*/, uint64_t & /*rev*/) {}
template<typename T> template<typename T>
static void on_attribute(const char * /*id*/, T &, const utils::field_attributes & = utils::null_attributes) {} static void on_attribute(const char * /*id*/, T &, const utils::field_attributes &/*attr*/) {}
template<class P> template<class P>
static void on_belongs_to(const char * /*id*/, P &, const utils::foreign_attributes & ) {} static void on_belongs_to(const char * /*id*/, P &, const utils::foreign_attributes & ) {}
template<class P> template<class P>
@ -38,7 +38,7 @@ struct pk_unset_checker {
bool unset{true}; bool unset{true};
template<class V> template<class V>
void on_primary_key(const char *id, V &pk, const utils::primary_key_attribute & = utils::default_pk_attributes) { void on_primary_key(const char *id, V &pk, const utils::primary_key_attribute &/*attr*/) {
if (id != nullptr && name == id) { if (id != nullptr && name == id) {
// Your convention: 0 means unset for integer PKs // Your convention: 0 means unset for integer PKs
unset = (static_cast<std::uint64_t>(pk) == 0ULL); unset = (static_cast<std::uint64_t>(pk) == 0ULL);
@ -46,7 +46,7 @@ struct pk_unset_checker {
} }
static void on_revision(const char * /*id*/, uint64_t & /*rev*/) {} static void on_revision(const char * /*id*/, uint64_t & /*rev*/) {}
template<typename T> template<typename T>
static void on_attribute(const char * /*id*/, T &, const utils::field_attributes & = utils::null_attributes) {} static void on_attribute(const char * /*id*/, T &, const utils::field_attributes &/*attr*/) {}
template<class P> template<class P>
static void on_belongs_to(const char * /*id*/, P &, const utils::foreign_attributes & ) {} static void on_belongs_to(const char * /*id*/, P &, const utils::foreign_attributes & ) {}
template<class P> template<class P>
@ -63,12 +63,12 @@ struct pk_value_extractor {
std::uint64_t value{0}; std::uint64_t value{0};
template<class V> template<class V>
void on_primary_key(const char * /*id*/, V &pk, const utils::primary_key_attribute & = utils::default_pk_attributes) { void on_primary_key(const char * /*id*/, V &pk, const utils::primary_key_attribute &/*attr*/) {
value = static_cast<std::uint64_t>(pk); value = static_cast<std::uint64_t>(pk);
} }
static void on_revision(const char * /*id*/, uint64_t & /*rev*/) {} static void on_revision(const char * /*id*/, uint64_t & /*rev*/) {}
template<typename T> template<typename T>
static void on_attribute(const char * /*id*/, T &, const utils::field_attributes & = utils::null_attributes) {} static void on_attribute(const char * /*id*/, T &, const utils::field_attributes &/*attr*/) {}
template<class P> template<class P>
static void on_belongs_to(const char * /*id*/, P &, const utils::foreign_attributes & ) {} static void on_belongs_to(const char * /*id*/, P &, const utils::foreign_attributes & ) {}
template<class P> template<class P>
@ -123,11 +123,11 @@ public:
} }
template < class V > template < class V >
static void on_primary_key(const char * /*id*/, V &, const utils::primary_key_attribute& /*attr*/ = utils::default_pk_attributes) {} static void on_primary_key(const char * /*id*/, V &, const utils::primary_key_attribute& /*attr*/) {}
static void on_revision(const char *id, uint64_t &/*rev*/); static void on_revision(const char *id, uint64_t &/*rev*/);
template<typename Type> template<typename Type>
static void on_attribute(const char * /*id*/, Type &, const utils::field_attributes &/*attr*/ = utils::null_attributes) {} static void on_attribute(const char * /*id*/, Type &, const utils::field_attributes &/*attr*/) {}
template<class Pointer> template<class Pointer>
void on_belongs_to(const char * /*id*/, Pointer &obj, const utils::foreign_attributes &attr) { void on_belongs_to(const char * /*id*/, Pointer &obj, const utils::foreign_attributes &attr) {

View File

@ -27,13 +27,13 @@ public:
} }
template < class V > template < class V >
void on_primary_key(const char *id, V &x, const utils::primary_key_attribute& /*attr*/ = utils::default_pk_attributes) { void on_primary_key(const char *id, V &x, const utils::primary_key_attribute& /*attr*/) {
result_.emplace_back(id, x); result_.emplace_back(id, x);
} }
void on_revision(const char *id, uint64_t &/*rev*/) const; void on_revision(const char *id, uint64_t &/*rev*/) const;
template<typename Type> template<typename Type>
void on_attribute(const char *id, Type &x, const utils::field_attributes &/*attr*/ = utils::null_attributes) { void on_attribute(const char *id, Type &x, const utils::field_attributes &/*attr*/) {
result_.emplace_back(id, x); result_.emplace_back(id, x);
} }

View File

@ -61,10 +61,10 @@ public:
{} {}
template<typename ValueType> template<typename ValueType>
static void on_primary_key(const char * /*id*/, ValueType &/*value*/, const utils::primary_key_attribute& /*attr*/ = utils::default_pk_attributes) {} static void on_primary_key(const char * /*id*/, ValueType &/*value*/, const utils::primary_key_attribute& /*attr*/) {}
static void on_revision(const char * /*id*/, uint64_t &/*rev*/) {} static void on_revision(const char * /*id*/, uint64_t &/*rev*/) {}
template<class Type> template<class Type>
static void on_attribute(const char * /*id*/, Type &/*value*/, const utils::field_attributes &/*attr*/ = utils::null_attributes) {} static void on_attribute(const char * /*id*/, Type &/*value*/, const utils::field_attributes &/*attr*/) {}
template<class Pointer> template<class Pointer>
static void on_belongs_to(const char * /*id*/, Pointer & /*x*/, const utils::foreign_attributes &/*attr*/) {} static void on_belongs_to(const char * /*id*/, Pointer & /*x*/, const utils::foreign_attributes &/*attr*/) {}
template<class Pointer> template<class Pointer>

View File

@ -90,7 +90,7 @@ public:
} }
template < class V > template < class V >
void on_primary_key(const char *id, V &, const utils::primary_key_attribute& /*attr*/ = utils::default_pk_attributes) { void on_primary_key(const char *id, V &, const utils::primary_key_attribute& /*attr*/) {
push(id); push(id);
if (!is_root_entity()) { if (!is_root_entity()) {
return; return;
@ -101,7 +101,7 @@ public:
void on_revision(const char *id, uint64_t &/*rev*/); void on_revision(const char *id, uint64_t &/*rev*/);
template<typename Type> template<typename Type>
void on_attribute(const char *id, Type &, const utils::field_attributes &/*attr*/ = utils::null_attributes) void on_attribute(const char *id, Type &, const utils::field_attributes &/*attr*/)
{ {
push(id); push(id);
} }

View File

@ -26,16 +26,16 @@ public:
} }
template<typename ValueType> template<typename ValueType>
void on_primary_key(const char *, ValueType &x, const utils::primary_key_attribute& attr = utils::default_pk_attributes) { void on_primary_key(const char *, ValueType &x, const utils::primary_key_attribute& attr) {
utils::data_type_traits<ValueType>::bind_value(*this, 0, x, attr.size()); utils::data_type_traits<ValueType>::bind_value(*this, 0, x, attr.size());
} }
void on_revision(const char *id, uint64_t &rev); void on_revision(const char *id, uint64_t &rev);
template < class Type > template < class Type >
void on_attribute(const char *, Type &x, const utils::field_attributes &/*attr*/ = utils::null_attributes) { void on_attribute(const char *, Type &x, const utils::field_attributes &/*attr*/) {
utils::data_type_traits<Type>::bind_value(*this, 0, x); utils::data_type_traits<Type>::bind_value(*this, 0, x);
} }
void on_attribute(const char *id, char *x, const utils::field_attributes &/*attr*/ = utils::null_attributes); void on_attribute(const char *id, char *x, const utils::field_attributes &/*attr*/);
void on_attribute(const char *id, std::string &x, const utils::field_attributes &/*attr*/ = utils::null_attributes); void on_attribute(const char *id, std::string &x, const utils::field_attributes &/*attr*/);
template<class Type, template < class ... > class Pointer> template<class Type, template < class ... > class Pointer>
void on_belongs_to(const char * /*id*/, Pointer<Type> &x, const utils::foreign_attributes &/*attr*/) { void on_belongs_to(const char * /*id*/, Pointer<Type> &x, const utils::foreign_attributes &/*attr*/) {

View File

@ -45,7 +45,7 @@ public:
} }
template < class V > template < class V >
void on_primary_key(const char *id, V &, const utils::primary_key_attribute& /*attr*/ = utils::default_pk_attributes) { void on_primary_key(const char *id, V &, const utils::primary_key_attribute& /*attr*/) {
if (has_many_to_many_) { if (has_many_to_many_) {
return; return;
} }
@ -54,7 +54,7 @@ public:
void on_revision(const char *id, uint64_t &/*rev*/); void on_revision(const char *id, uint64_t &/*rev*/);
template<typename Type> template<typename Type>
void on_attribute(const char *id, Type &, const utils::field_attributes &/*attr*/ = utils::null_attributes) { void on_attribute(const char *id, Type &, const utils::field_attributes &/*attr*/) {
if (has_many_to_many_) { if (has_many_to_many_) {
return; return;
} }

View File

@ -23,14 +23,14 @@ public:
} }
template<typename ValueType> template<typename ValueType>
void on_primary_key(const char *id, ValueType &value, const utils::primary_key_attribute& attr = utils::default_pk_attributes) { void on_primary_key(const char *id, ValueType &value, const utils::primary_key_attribute& attr) {
utils::data_type_traits<ValueType>::read_value(reader_, id, column_index_, value, attr.size()); utils::data_type_traits<ValueType>::read_value(reader_, id, column_index_, value, attr.size());
identifier_ = value; identifier_ = value;
} }
static void on_revision(const char * /*id*/, uint64_t &/*rev*/) {} static void on_revision(const char * /*id*/, uint64_t &/*rev*/) {}
template < class Type > template < class Type >
static void on_attribute(const char * /*id*/, Type &/*x*/, const utils::field_attributes &/*attr*/ = utils::null_attributes) {} static void on_attribute(const char * /*id*/, Type &/*x*/, const utils::field_attributes &/*attr*/) {}
template < class Pointer > template < class Pointer >
static void on_belongs_to(const char * /*id*/, Pointer &/*x*/, const utils::foreign_attributes &/*attr*/) {} static void on_belongs_to(const char * /*id*/, Pointer &/*x*/, const utils::foreign_attributes &/*attr*/) {}
template < class Pointer > template < class Pointer >

View File

@ -28,21 +28,21 @@ public:
} }
template<typename ValueType> template<typename ValueType>
void on_primary_key(const char *id, ValueType &value, const utils::primary_key_attribute& attr = utils::default_pk_attributes); void on_primary_key(const char *id, ValueType &value, const utils::primary_key_attribute& attr);
static void on_revision(const char * /*id*/, uint64_t &/*rev*/) {} static void on_revision(const char * /*id*/, uint64_t &/*rev*/) {}
template < class Type > template < class Type >
static void on_attribute(const char * /*id*/, Type &/*x*/, const utils::field_attributes &/*attr*/ = utils::null_attributes) {} static void on_attribute(const char * /*id*/, Type &/*x*/, const utils::field_attributes &/*attr*/) {}
template < class Pointer > template < class Pointer >
static void on_belongs_to(const char * /*id*/, Pointer &/*x*/, const utils::foreign_attributes &/*attr*/ = utils::CascadeNoneFetchLazy) {} static void on_belongs_to(const char * /*id*/, Pointer &/*x*/, const utils::foreign_attributes &/*attr*/) {}
template < class Pointer > template < class Pointer >
static void on_has_one(const char * /*id*/, Pointer &/*x*/, const utils::foreign_attributes &/*attr*/ = utils::CascadeNoneFetchLazy) {} static void on_has_one(const char * /*id*/, Pointer &/*x*/, const utils::foreign_attributes &/*attr*/) {}
template<class ContainerType> template<class ContainerType>
static void on_has_many(const char * /*id*/, static void on_has_many(const char * /*id*/,
ContainerType &/*c*/, ContainerType &/*c*/,
const char * /*join_column*/, const char * /*join_column*/,
const utils::foreign_attributes &/*attr*/ = utils::CascadeNoneFetchLazy) {} const utils::foreign_attributes &/*attr*/) {}
template<class ContainerType> template<class ContainerType>
static void on_has_many_to_many(const char * /*id*/, static void on_has_many_to_many(const char * /*id*/,
ContainerType &/*c*/, ContainerType &/*c*/,
@ -74,32 +74,32 @@ public:
void reset(); void reset();
template < class Type > template < class Type >
void on_primary_key(const char *id, Type &val, const utils::primary_key_attribute& attr = utils::default_pk_attributes) { void on_primary_key(const char *id, Type &val, const utils::primary_key_attribute& attr) {
utils::data_type_traits<Type>::read_value(*binder_, id, index_++, val, attr.size()); utils::data_type_traits<Type>::read_value(*binder_, id, index_++, val, attr.size());
} }
void on_revision(const char *id, uint64_t &/*rev*/); void on_revision(const char *id, uint64_t &/*rev*/);
template<typename Type> template<typename Type>
void on_attribute(const char *id, Type &val, const utils::field_attributes &/*attr*/ = utils::null_attributes) { void on_attribute(const char *id, Type &val, const utils::field_attributes &/*attr*/) {
utils::data_type_traits<Type>::read_value(*binder_, id, index_++, val); utils::data_type_traits<Type>::read_value(*binder_, id, index_++, val);
} }
void on_attribute(const char *id, char *value, const utils::field_attributes &attr = utils::null_attributes); void on_attribute(const char *id, char *value, const utils::field_attributes &attr);
void on_attribute(const char *id, std::string &value, const utils::field_attributes &attr = utils::null_attributes); void on_attribute(const char *id, std::string &value, const utils::field_attributes &attr);
void on_attribute(const char *id, utils::value &val, const utils::field_attributes &attr = utils::null_attributes); void on_attribute(const char *id, utils::value &val, const utils::field_attributes &attr);
template<class Type, template < class ... > class Pointer> template<class Type, template < class ... > class Pointer>
void on_belongs_to(const char *id, Pointer<Type> &x, const utils::foreign_attributes &/*attr*/ = utils::CascadeNoneFetchLazy) { void on_belongs_to(const char *id, Pointer<Type> &x, const utils::foreign_attributes &/*attr*/) {
fk_result_binder_.bind(*x, id, index_++, *binder_); fk_result_binder_.bind(*x, id, index_++, *binder_);
} }
template<class Type, template < class ... > class Pointer> template<class Type, template < class ... > class Pointer>
void on_has_one(const char *id, Pointer<Type> &x, const utils::foreign_attributes &/*attr*/ = utils::CascadeNoneFetchLazy) { void on_has_one(const char *id, Pointer<Type> &x, const utils::foreign_attributes &/*attr*/) {
fk_result_binder_.bind(*x, id, index_++, *binder_); fk_result_binder_.bind(*x, id, index_++, *binder_);
} }
template<class ContainerType> template<class ContainerType>
static void on_has_many(const char * /*id*/, static void on_has_many(const char * /*id*/,
ContainerType &/*c*/, ContainerType &/*c*/,
const char * /*join_column*/, const char * /*join_column*/,
const utils::foreign_attributes &/*attr*/ = utils::CascadeNoneFetchLazy) {} const utils::foreign_attributes &/*attr*/) {}
template<class ContainerType> template<class ContainerType>
static void on_has_many_to_many(const char * /*id*/, static void on_has_many_to_many(const char * /*id*/,
ContainerType &/*c*/, ContainerType &/*c*/,

View File

@ -15,13 +15,13 @@ public:
} }
template<typename ValueType> template<typename ValueType>
void on_primary_key(const char *id, ValueType &value, const utils::primary_key_attribute& attr = utils::default_pk_attributes); void on_primary_key(const char *id, ValueType &value, const utils::primary_key_attribute& attr);
void on_revision(const char * /*id*/, uint64_t &/*rev*/) { void on_revision(const char * /*id*/, uint64_t &/*rev*/) {
++column_index_; ++column_index_;
} }
template<class Type> template<class Type>
void on_attribute(const char * /*id*/, Type &/*x*/, const utils::field_attributes &/*attr*/ = utils::null_attributes) { void on_attribute(const char * /*id*/, Type &/*x*/, const utils::field_attributes &/*attr*/) {
++column_index_; ++column_index_;
} }

View File

@ -41,7 +41,7 @@ public:
size_t column_index = 0); size_t column_index = 0);
template<typename ValueType> template<typename ValueType>
void on_primary_key(const char *id, ValueType &value, const utils::primary_key_attribute& attr = utils::default_pk_attributes) { void on_primary_key(const char *id, ValueType &value, const utils::primary_key_attribute& attr) {
utils::data_type_traits<ValueType>::read_value(*reader_, id, column_index_++, value, attr.size()); utils::data_type_traits<ValueType>::read_value(*reader_, id, column_index_++, value, attr.size());
if (type_stack_.size() == 1) { if (type_stack_.size() == 1) {
last_pk_ = current_pk_; last_pk_ = current_pk_;
@ -52,13 +52,13 @@ public:
void on_revision(const char *id, uint64_t &rev); void on_revision(const char *id, uint64_t &rev);
template<class Type> template<class Type>
void on_attribute(const char *id, Type &x, const utils::field_attributes &/*attr*/ = utils::null_attributes) { void on_attribute(const char *id, Type &x, const utils::field_attributes &/*attr*/) {
utils::data_type_traits<Type>::read_value(*reader_, id, column_index_++, x); utils::data_type_traits<Type>::read_value(*reader_, id, column_index_++, x);
} }
void on_attribute(const char *id, char *value, const utils::field_attributes &attr = utils::null_attributes); void on_attribute(const char *id, char *value, const utils::field_attributes &attr);
void on_attribute(const char *id, std::string &value, const utils::field_attributes &attr = utils::null_attributes); void on_attribute(const char *id, std::string &value, const utils::field_attributes &attr);
void on_attribute(const char *id, utils::value &val, const utils::field_attributes &attr = utils::null_attributes); void on_attribute(const char *id, utils::value &val, const utils::field_attributes &attr);
template<class Pointer> template<class Pointer>
void on_belongs_to(const char * /*id*/, Pointer &x, const utils::foreign_attributes &attr) { void on_belongs_to(const char * /*id*/, Pointer &x, const utils::foreign_attributes &attr) {

View File

@ -28,7 +28,7 @@ public:
} }
template<typename ValueType> template<typename ValueType>
void on_primary_key(const char *id, ValueType &/*value*/, const utils::primary_key_attribute& attr = utils::default_pk_attributes) { void on_primary_key(const char *id, ValueType &/*value*/, const utils::primary_key_attribute& attr) {
if (!type_stack_.empty()) { if (!type_stack_.empty()) {
return; return;
} }
@ -39,8 +39,8 @@ public:
void on_revision(const char * /*id*/, uint64_t &/*rev*/) { ++column_index_; } void on_revision(const char * /*id*/, uint64_t &/*rev*/) { ++column_index_; }
template < class Type > template < class Type >
void on_attribute(const char * /*id*/, Type &/*x*/, const utils::field_attributes &/*attr*/ = utils::null_attributes) { ++column_index_; } void on_attribute(const char * /*id*/, Type &/*x*/, const utils::field_attributes &/*attr*/) { ++column_index_; }
void on_attribute(const char *id, const utils::value &x, const utils::field_attributes &attr = utils::null_attributes); void on_attribute(const char *id, const utils::value &x, const utils::field_attributes &attr);
template < class Pointer > template < class Pointer >
void on_belongs_to(const char * /*id*/, Pointer &/*x*/, const utils::foreign_attributes &attr) { on_foreign_key<typename Pointer::value_type>(attr.fetch() ); } void on_belongs_to(const char * /*id*/, Pointer &/*x*/, const utils::foreign_attributes &attr) { on_foreign_key<typename Pointer::value_type>(attr.fetch() ); }

View File

@ -18,29 +18,29 @@ public:
[[nodiscard]] size_t current_index() const; [[nodiscard]] size_t current_index() const;
template < class Type > template < class Type >
void on_primary_key(const char * /*id*/, Type &val, const utils::primary_key_attribute& attr = utils::default_pk_attributes) { void on_primary_key(const char * /*id*/, Type &val, const utils::primary_key_attribute& attr) {
utils::data_type_traits<Type>::bind_value(*binder_, index_++, val, attr.size()); utils::data_type_traits<Type>::bind_value(*binder_, index_++, val, attr.size());
} }
void on_revision(const char *id, uint64_t &/*rev*/); void on_revision(const char *id, uint64_t &/*rev*/);
template<typename Type> template<typename Type>
void on_attribute(const char * /*id*/, Type &val, const utils::field_attributes &/*attr*/ = utils::null_attributes) { void on_attribute(const char * /*id*/, Type &val, const utils::field_attributes &/*attr*/) {
utils::data_type_traits<Type>::bind_value(*binder_, index_++, val); utils::data_type_traits<Type>::bind_value(*binder_, index_++, val);
} }
template<class Type, template < class ... > class Pointer> template<class Type, template < class ... > class Pointer>
void on_belongs_to(const char * /*id*/, Pointer<Type> &x, const utils::foreign_attributes &/*attr*/ = utils::CascadeNoneFetchLazy) { void on_belongs_to(const char * /*id*/, Pointer<Type> &x, const utils::foreign_attributes &/*attr*/) {
pk_binder_.bind(*x, index_++, *binder_); pk_binder_.bind(*x, index_++, *binder_);
} }
template<class Type, template < class ... > class Pointer> template<class Type, template < class ... > class Pointer>
void on_has_one(const char * /*id*/, Pointer<Type> &x, const utils::foreign_attributes &/*attr*/ = utils::CascadeNoneFetchLazy) { void on_has_one(const char * /*id*/, Pointer<Type> &x, const utils::foreign_attributes &/*attr*/) {
pk_binder_.bind(*x, index_++, *binder_); pk_binder_.bind(*x, index_++, *binder_);
} }
template<class ContainerType> template<class ContainerType>
static void on_has_many(const char * /*id*/, static void on_has_many(const char * /*id*/,
ContainerType &/*c*/, ContainerType &/*c*/,
const char * /*join_column*/, const char * /*join_column*/,
const utils::foreign_attributes &/*attr*/ = utils::CascadeNoneFetchLazy) {} const utils::foreign_attributes &/*attr*/) {}
template<class ContainerType> template<class ContainerType>
static void on_has_many_to_many(const char * /*id*/, static void on_has_many_to_many(const char * /*id*/,
ContainerType &/*c*/, ContainerType &/*c*/,

View File

@ -20,21 +20,21 @@ public:
} }
template<typename ValueType> template<typename ValueType>
void on_primary_key(const char *id, ValueType &value, const utils::primary_key_attribute& attr = utils::default_pk_attributes); void on_primary_key(const char *id, ValueType &value, const utils::primary_key_attribute& attr);
static void on_revision(const char * /*id*/, unsigned long long &/*rev*/) {} static void on_revision(const char * /*id*/, unsigned long long &/*rev*/) {}
template < class Type > template < class Type >
static void on_attribute(const char * /*id*/, Type &/*x*/, const utils::field_attributes &/*attr*/ = utils::null_attributes) {} static void on_attribute(const char * /*id*/, Type &/*x*/, const utils::field_attributes &/*attr*/) {}
template < class Pointer > template < class Pointer >
static void on_belongs_to(const char * /*id*/, Pointer &/*x*/, const utils::foreign_attributes &/*attr*/ = utils::CascadeNoneFetchLazy) {} static void on_belongs_to(const char * /*id*/, Pointer &/*x*/, const utils::foreign_attributes &/*attr*/) {}
template < class Pointer > template < class Pointer >
static void on_has_one(const char * /*id*/, Pointer &/*x*/, const utils::foreign_attributes &/*attr*/ = utils::CascadeNoneFetchLazy) {} static void on_has_one(const char * /*id*/, Pointer &/*x*/, const utils::foreign_attributes &/*attr*/) {}
template<class ContainerType> template<class ContainerType>
static void on_has_many(const char * /*id*/, static void on_has_many(const char * /*id*/,
ContainerType &/*c*/, ContainerType &/*c*/,
const char * /*join_column*/, const char * /*join_column*/,
const utils::foreign_attributes &/*attr*/ = utils::CascadeNoneFetchLazy) {} const utils::foreign_attributes &/*attr*/) {}
template<class ContainerType> template<class ContainerType>
static void on_has_many_to_many(const char * /*id*/, static void on_has_many_to_many(const char * /*id*/,
ContainerType &/*c*/, ContainerType &/*c*/,

View File

@ -1,7 +1,10 @@
#ifndef OOS_ACCESS_HPP #ifndef OOS_ACCESS_HPP
#define OOS_ACCESS_HPP #define OOS_ACCESS_HPP
#include <cstdint> #include "matador/utils/primary_key_attribute.hpp"
#include "matador/utils/field_attributes.hpp"
#include "matador/utils/foreign_attributes.hpp"
#include <optional> #include <optional>
namespace matador { namespace matador {
@ -29,108 +32,66 @@ template<class Base, class Derived, class Operator>
void process_base(Operator &op, const Derived &object) { void process_base(Operator &op, const Derived &object) {
static_assert(!std::is_same_v<Base, Derived>, "class Base must not be of same type as class Derived"); static_assert(!std::is_same_v<Base, Derived>, "class Base must not be of same type as class Derived");
static_assert(std::is_base_of_v<Base, Derived>, "class Base must be base of class Derived"); static_assert(std::is_base_of_v<Base, Derived>, "class Base must be base of class Derived");
process(op, static_cast<const Base&>(object)); op.on_base(static_cast<const Base&>(object));
} }
template<class Base, class Derived, class Operator> template<class Base, class Derived, class Operator>
void process_base(Operator &op, Derived &object) { void process_base(Operator &op, Derived &object) {
static_assert(!std::is_same_v<Base, Derived>, "class Base must not be of same type as class Derived"); static_assert(!std::is_same_v<Base, Derived>, "class Base must not be of same type as class Derived");
static_assert(std::is_base_of_v<Base, Derived>, "class Base must be base of class Derived"); static_assert(std::is_base_of_v<Base, Derived>, "class Base must be base of class Derived");
process(op, static_cast<Base&>(object)); op.on_base(static_cast<Base&>(object));
} }
template< class Operator, class Type > template< class Operator, class Type >
void primary_key(Operator &op, const char *id, Type &value, const utils::primary_key_attribute &attr) { void primary_key(Operator &op, const char *id, Type &value, const utils::primary_key_attribute &attr = utils::DefaultPkAttributes) {
op.on_primary_key(id, value, attr); op.on_primary_key(id, value, attr);
} }
template< class Operator, class Type >
void primary_key(Operator &op, const char *id, Type &value) {
op.on_primary_key(id, value);
}
template<class Operator> template<class Operator>
void revision(Operator &op, const char *id, uint64_t &value) { void revision(Operator &op, const char *id, uint64_t &value) {
op.on_revision(id, value); op.on_revision(id, value);
} }
template<class Operator, class Type> template<class Operator, class Type>
void attribute(Operator &op, const char *id, Type &value, const utils::field_attributes &attr) { void attribute(Operator &op, const char *id, Type &value, const utils::field_attributes &attr = utils::NullAttributes) {
op.on_attribute(id, value, attr); op.on_attribute(id, value, attr);
} }
template<class Operator, class Type> template<class Operator, class Type>
void attribute(Operator &op, const char *id, std::optional<Type> &value, const utils::field_attributes &attr) { void attribute(Operator &op, const char *id, std::optional<Type> &value, const utils::field_attributes &attr = utils::NullAttributes) {
op.on_attribute(id, value, attr); op.on_attribute(id, value, attr);
} }
template<class Operator, class Type> template<class Operator, class Type>
void attribute(Operator &op, const char *id, Type &value) { void has_one(Operator &op, const char *id, Type &value, const utils::foreign_attributes &attr = utils::CascadeNoneFetchLazy) {
op.on_attribute(id, value);
}
template<class Operator, class Type>
void has_one(Operator &op, const char *id, Type &value, const utils::foreign_attributes &attr) {
op.on_has_one(id, value, attr); op.on_has_one(id, value, attr);
} }
template<class Operator, class Type> template<class Operator, class Type>
void has_one(Operator &op, const char *id, Type &value) { void belongs_to(Operator &op, const char *id, Type &value, const utils::foreign_attributes &attr = utils::CascadeNoneFetchLazy) {
op.on_has_one(id, value);
}
template<class Operator, class Type>
void belongs_to(Operator &op, const char *id, Type &value, const utils::foreign_attributes &attr) {
op.on_belongs_to(id, value, attr); op.on_belongs_to(id, value, attr);
} }
template<class Operator, class Type>
void belongs_to(Operator &op, const char *id, Type &value) {
op.on_belongs_to(id, value);
}
template<class Operator, class Type, template<class ...> class ContainerType> template<class Operator, class Type, template<class ...> class ContainerType>
void has_many(Operator &op, const char *id, ContainerType<Type> &c, const char *join_column, const utils::foreign_attributes &attr) { void has_many(Operator &op, const char *id, ContainerType<Type> &c, const char *join_column, const utils::foreign_attributes &attr = utils::CascadeNoneFetchLazy) {
op.on_has_many(id, c, join_column, attr); op.on_has_many(id, c, join_column, attr);
} }
template<class Operator, class Type, template<class ...> class ContainerType> template<class Operator, class Type, template<class ...> class ContainerType>
void has_many(Operator &op, const char *id, ContainerType<Type> &c, const char *join_column) { void has_many(Operator &op, const char *id, ContainerType<Type> &c, const utils::foreign_attributes &attr = utils::CascadeNoneFetchLazy) {
op.on_has_many(id, c, join_column);
}
template<class Operator, class Type, template<class ...> class ContainerType>
void has_many(Operator &op, const char *id, ContainerType<Type> &c, const utils::foreign_attributes &attr) {
op.on_has_many(id, c, attr); op.on_has_many(id, c, attr);
} }
template<class Operator, class Type, template<class ...> class ContainerType>
void has_many(Operator &op, const char *id, ContainerType<Type> &c) {
op.on_has_many(id, c);
}
template<class Operator, class ContainerType> template<class Operator, class ContainerType>
void has_many_to_many(Operator &op, const char *id, ContainerType &c, const char *join_column, const char *inverse_join_column, const utils::foreign_attributes &attr) { void has_many_to_many(Operator &op, const char *id, ContainerType &c, const char *join_column, const char *inverse_join_column, const utils::foreign_attributes &attr = utils::CascadeNoneFetchLazy) {
op.on_has_many_to_many(id, c, join_column, inverse_join_column, attr); op.on_has_many_to_many(id, c, join_column, inverse_join_column, attr);
} }
template<class Operator, class ContainerType> template<class Operator, class ContainerType>
void has_many_to_many(Operator &op, const char *id, ContainerType &c, const char *join_column, const char *inverse_join_column) { void has_many_to_many(Operator &op, const char *id, ContainerType &c, const utils::foreign_attributes &attr = utils::CascadeNoneFetchLazy) {
op.on_has_many_to_many(id, c, join_column, inverse_join_column);
}
template<class Operator, class ContainerType>
void has_many_to_many(Operator &op, const char *id, ContainerType &c, const utils::foreign_attributes &attr) {
op.on_has_many_to_many(id, c, attr); op.on_has_many_to_many(id, c, attr);
} }
template<class Operator, class ContainerType>
void has_many_to_many(Operator &op, const char *id, ContainerType &c) {
op.on_has_many_to_many(id, c);
} }
}
} }
#endif //OOS_ACCESS_HPP #endif //OOS_ACCESS_HPP

View File

@ -74,7 +74,7 @@ private:
constraints options_ = constraints::None; constraints options_ = constraints::None;
}; };
const field_attributes null_attributes {}; const field_attributes NullAttributes {};
} }
#endif //MATADOR_FIELD_ATTRIBUTES_HPP #endif //MATADOR_FIELD_ATTRIBUTES_HPP

View File

@ -22,7 +22,7 @@ public:
} }
template<typename PrimaryKeyType> template<typename PrimaryKeyType>
void on_primary_key(const char * /*id*/, PrimaryKeyType &pk, const primary_key_attribute & = default_pk_attributes) { void on_primary_key(const char * /*id*/, PrimaryKeyType &pk, const primary_key_attribute & = DefaultPkAttributes) {
const auto value = pk_.as<PrimaryKeyType>(); const auto value = pk_.as<PrimaryKeyType>();
if (!value) { if (!value) {
// Todo: throw error // Todo: throw error
@ -32,7 +32,7 @@ public:
} }
static void on_revision(const char * /*id*/, uint64_t & /*rev*/) {} static void on_revision(const char * /*id*/, uint64_t & /*rev*/) {}
template<typename T> template<typename T>
static void on_attribute(const char * /*id*/, T &, const field_attributes & = null_attributes) {} static void on_attribute(const char * /*id*/, T &, const field_attributes & = NullAttributes) {}
template<class P> template<class P>
static void on_belongs_to(const char * /*id*/, P &, const foreign_attributes & ) {} static void on_belongs_to(const char * /*id*/, P &, const foreign_attributes & ) {}
template<class P> template<class P>
@ -52,12 +52,12 @@ struct pk_unset_checker {
bool unset{true}; bool unset{true};
template<class PrimaryKeyType> template<class PrimaryKeyType>
void on_primary_key(const char * /*id*/, PrimaryKeyType &pk, const primary_key_attribute & = default_pk_attributes) { void on_primary_key(const char * /*id*/, PrimaryKeyType &pk, const primary_key_attribute & = DefaultPkAttributes) {
unset = !identifier_type_traits<PrimaryKeyType>::is_valid(pk); unset = !identifier_type_traits<PrimaryKeyType>::is_valid(pk);
} }
static void on_revision(const char * /*id*/, uint64_t & /*rev*/) {} static void on_revision(const char * /*id*/, uint64_t & /*rev*/) {}
template<typename T> template<typename T>
static void on_attribute(const char * /*id*/, T &, const field_attributes & = null_attributes) {} static void on_attribute(const char * /*id*/, T &, const field_attributes & = NullAttributes) {}
template<class P> template<class P>
static void on_belongs_to(const char * /*id*/, P &, const foreign_attributes & ) {} static void on_belongs_to(const char * /*id*/, P &, const foreign_attributes & ) {}
template<class P> template<class P>
@ -74,12 +74,12 @@ struct primary_key_getter {
std::uint64_t value{0}; std::uint64_t value{0};
template<class PrimaryKeyType> template<class PrimaryKeyType>
void on_primary_key(const char * /*id*/, PrimaryKeyType &pk, const primary_key_attribute & = default_pk_attributes) { void on_primary_key(const char * /*id*/, PrimaryKeyType &pk, const primary_key_attribute & = DefaultPkAttributes) {
pk_ = pk; pk_ = pk;
} }
static void on_revision(const char * /*id*/, uint64_t & /*rev*/) {} static void on_revision(const char * /*id*/, uint64_t & /*rev*/) {}
template<typename T> template<typename T>
static void on_attribute(const char * /*id*/, T &, const field_attributes & = null_attributes) {} static void on_attribute(const char * /*id*/, T &, const field_attributes & = NullAttributes) {}
template<class P> template<class P>
static void on_belongs_to(const char * /*id*/, P &, const foreign_attributes & ) {} static void on_belongs_to(const char * /*id*/, P &, const foreign_attributes & ) {}
template<class P> template<class P>

View File

@ -47,7 +47,7 @@ private:
generator_type generator_ = generator_type::Manual; generator_type generator_ = generator_type::Manual;
}; };
const primary_key_attribute default_pk_attributes {}; const primary_key_attribute DefaultPkAttributes {};
} }
#endif //PRIMARY_KEY_ATTRIBUTE_HPP #endif //PRIMARY_KEY_ATTRIBUTE_HPP

View File

@ -21,7 +21,7 @@ std::shared_ptr<object> object_generator::acquire_object(basic_repository &repo,
} }
void object_generator::on_revision(const char* id, uint64_t& rev) { void object_generator::on_revision(const char* id, uint64_t& rev) {
on_attribute(id, rev); access::attribute(*this, id, rev);
} }
void object_generator::create_pk_constraint(const std::string& name) const { void object_generator::create_pk_constraint(const std::string& name) const {

View File

@ -14,7 +14,7 @@ struct coordinate {
namespace matador::access { namespace matador::access {
template<class Operator> template<class Operator>
void attribute(Operator &op, const char *id, test::coordinate &value, const utils::field_attributes &attr = utils::null_attributes) { void attribute(Operator &op, const char *id, test::coordinate &value, const utils::field_attributes &attr = utils::NullAttributes) {
attribute(op, (std::string(id) + "_x").c_str(), value.x, attr); attribute(op, (std::string(id) + "_x").c_str(), value.x, attr);
attribute(op, (std::string(id) + "_y").c_str(), value.y, attr); attribute(op, (std::string(id) + "_y").c_str(), value.y, attr);
attribute(op, (std::string(id) + "_z").c_str(), value.z, attr); attribute(op, (std::string(id) + "_z").c_str(), value.z, attr);