removed object_definition class

This commit is contained in:
Sascha Kühl
2025-11-21 09:16:53 +01:00
parent d8903ed772
commit dae3c1645b
12 changed files with 2 additions and 299 deletions
@@ -30,28 +30,11 @@ public:
attribute_definition& operator=(attribute_definition&&) noexcept = default;
attribute_definition() = default;
// template<typename Type>
// attribute_definition(std::string name, const utils::field_attributes& attr)
// : attribute_definition(std::move(name), utils::data_type_traits<Type>::type(attr.size()), attr)
// {}
//
// template<size_t SIZE>
// attribute_definition(std::string name, const char (&)[SIZE], const utils::field_attributes& attr, const null_option_type null_opt)
// : attribute_definition(std::move(name), utils::data_type_traits<const char*>::type(attr.size()), attr, null_opt)
// {}
attribute_definition(std::string name,
utils::basic_type type,
const utils::field_attributes&,
null_option_type null_opt,
int index = 0);
// template<typename Type>
// attribute_definition(std::string name, const std::shared_ptr<attribute_definition> &ref_column, const utils::field_attributes& attr, null_option_type null_opt)
// : attribute_definition(std::move(name), utils::data_type_traits<Type>::type(attr.size()), ref_column, attr, null_opt)
// {}
//
attribute_definition(std::string name,
utils::basic_type type,
int index,
@@ -102,10 +85,7 @@ public:
}
private:
friend class object_definition;
std::string name_;
// std::shared_ptr<object_definition> object_{};
std::string table_name_;
attribute_options options_;
utils::basic_type type_{utils::basic_type::type_null};
+1 -3
View File
@@ -1,7 +1,7 @@
#ifndef BASIC_PROTOTYPE_INFO_HPP
#define BASIC_PROTOTYPE_INFO_HPP
#include "matador/object/object_definition.hpp"
#include "matador/object/attribute_definition.hpp"
#include "matador/object/relation_endpoint.hpp"
#include "matador/utils/identifier.hpp"
@@ -49,14 +49,12 @@ public:
[[nodiscard]] bool endpoints_empty() const;
protected:
// basic_object_info(std::shared_ptr<repository_node> node, utils::identifier &&pk, const std::shared_ptr<attribute_definition> &pk_column, const std::shared_ptr<object_definition> &definition);
basic_object_info(std::shared_ptr<repository_node> node, const std::vector<attribute_definition> &attributes, utils::identifier &&pk, const std::shared_ptr<attribute_definition> &pk_as_fk_column);
basic_object_info(std::shared_ptr<repository_node> node, const std::vector<attribute_definition> &attributes);
protected:
std::shared_ptr<repository_node> node_; /**< prototype node of the represented object type */
std::vector<attribute_definition> attributes_;
// std::shared_ptr<object_definition> definition_;
std::optional<utils::identifier> identifier_;
std::shared_ptr<attribute_definition> pk_as_fk_column_;
t_endpoint_map relation_endpoints_;
@@ -1,77 +0,0 @@
#ifndef QUERY_TABLE_DEFINITION_HPP
#define QUERY_TABLE_DEFINITION_HPP
#include "matador/object/attribute_definition.hpp"
#include <optional>
#include <unordered_map>
namespace matador::object {
class object_definition final {
private:
using column_by_index = std::vector<attribute_definition>;
using column_index_pair = std::pair<std::reference_wrapper<attribute_definition>, column_by_index::difference_type>;
using column_by_name_map = std::unordered_map<std::string, column_index_pair>;
public:
using iterator = column_by_index::iterator;
using const_iterator = column_by_index::const_iterator;
object_definition() = default;
explicit object_definition(std::string name);
object_definition(std::string name, std::initializer_list<attribute_definition> columns);
explicit object_definition(std::string name, const std::vector<attribute_definition> &columns);
object_definition(const object_definition &x);
object_definition& operator=(const object_definition &x);
object_definition(object_definition&&) noexcept = default;
object_definition& operator=(object_definition&&) noexcept = default;
~object_definition() = default;
[[nodiscard]] const std::string& name() const;
[[nodiscard]] bool has_primary_key() const;
[[nodiscard]] std::optional<attribute_definition> primary_key() const;
template < typename Type >
void append(const std::string &name, long size = -1) {
append(make_column<Type>(name, size));
}
void append(attribute_definition&& col);
[[nodiscard]] const std::vector<attribute_definition>& columns() const;
[[nodiscard]] const attribute_definition& at(const std::string &name) const;
[[nodiscard]] const attribute_definition& at(size_t index) const;
iterator find(const std::string &column_name);
[[nodiscard]] const_iterator find(const std::string &column_name) const;
iterator begin();
[[nodiscard]] const_iterator begin() const;
[[nodiscard]] const_iterator cbegin() const;
iterator end();
[[nodiscard]] const_iterator end() const;
[[nodiscard]] const_iterator cend() const;
[[nodiscard]] size_t size() const;
[[nodiscard]] bool empty() const;
void clear();
private:
void init();
void add_to_map(attribute_definition &col, size_t index);
private:
friend class repository_node;
std::string name_;
column_by_index columns_;
column_by_name_map columns_by_name_;
int pk_index_{-1};
};
}
#endif //QUERY_TABLE_DEFINITION_HPP
+1 -16
View File
@@ -2,7 +2,6 @@
#define OBJECT_INFO_HPP
#include "matador/object/basic_object_info.hpp"
// #include "matador/object/object_definition.hpp"
namespace matador::object {
class repository_node;
@@ -12,30 +11,16 @@ class object_info final : public basic_object_info {
public:
using create_func = std::function<std::unique_ptr<Type>()>;
// object_info(const std::shared_ptr<repository_node>& node,
// const std::shared_ptr<attribute_definition> &ref_column)
// : basic_object_info(node, {}, ref_column, {})
// , creator_([]{return std::make_unique<Type>(); }){
// }
// object_info(const std::shared_ptr<repository_node>& node,
// utils::identifier &&pk,
// const std::shared_ptr<attribute_definition> &ref_column,
// object_definition &&definition)
// : basic_object_info(node, std::move(pk), ref_column, std::move(definition))
// , creator_([]{return std::make_unique<Type>(); }){
// }
object_info(const std::shared_ptr<repository_node>& node,
const std::vector<attribute_definition> &attributes,
utils::identifier &&pk,
const std::shared_ptr<attribute_definition> &ref_column,
// object_definition &&definition,
create_func&& creator)
: basic_object_info(node, attributes, std::move(pk), ref_column/*, std::move(definition)*/)
: basic_object_info(node, attributes, std::move(pk), ref_column)
, creator_(std::move(creator)){
}
object_info(const std::shared_ptr<repository_node>& node,
const std::vector<attribute_definition> &attributes,
// object_definition &&definition,
create_func&& creator)
: basic_object_info(node, attributes)
, creator_(std::move(creator)){
@@ -21,13 +21,9 @@ public:
auto node = std::shared_ptr<repository_node>(new repository_node(repo, name, typeid(Type)));
primary_key_resolver resolver;
// auto obj = std::make_shared<object_definition>(name);
auto pk_info = resolver.resolve<Type>();
auto ref_column = determine_reference_column(typeid(Type), name, pk_info, repo);
const auto attributes = attribute_definition_generator::generate<Type>(repo);
// for (auto&& attr : attributes) {
// obj->append(std::move(attr));
// }
auto info = std::make_unique<object_info<Type>>(
node,
attributes,
-1
View File
@@ -15,7 +15,6 @@
#include "matador/sql/statement_cache.hpp"
#include "matador/object/object_ptr.hpp"
#include "matador/object/object_definition.hpp"
#include "matador/object/repository.hpp"
#include <unordered_map>