added join_column_index and inverse_join_column_index to object and table classes

This commit is contained in:
2026-06-01 06:57:38 +02:00
parent bd06034ebf
commit cea7b97f2b
16 changed files with 164 additions and 75 deletions
+13 -6
View File
@@ -17,21 +17,25 @@ public:
static const attribute& create_attribute(std::string name, const std::shared_ptr<object>& obj);
[[nodiscard]] attribute* primary_key_attribute() const;
[[nodiscard]] const attribute* primary_key_attribute() const;
[[nodiscard]] const utils::identifier& primary_key() const;
[[nodiscard]] bool has_primary_key() const;
[[nodiscard]] bool is_relation_object() const;
[[nodiscard]] const attribute* join_attribute() const;
[[nodiscard]] const attribute* inverse_join_attribute() const;
[[nodiscard]] const std::string& name() const;
void update_name(const std::string& name);
[[nodiscard]] bool has_attributes() const;
[[nodiscard]] size_t attribute_count() const;
[[nodiscard]] const std::list<attribute>& attributes() const;
[[nodiscard]] const std::vector<attribute>& attributes() const;
[[nodiscard]] bool has_constraints() const;
[[nodiscard]] size_t constraint_count() const;
[[nodiscard]] const std::list<restriction>& constraints() const;
[[nodiscard]] const std::vector<restriction>& constraints() const;
friend std::ostream& operator<<(std::ostream& os, const object& obj);
@@ -40,10 +44,13 @@ private:
friend class object_generator;
std::string name_;
attribute* pk_attribute_{nullptr};
int pk_column_index_{-1};
int join_column_index_{-1};
int inverse_join_column_index_{-1};
utils::identifier pk_identifier_;
std::list<attribute> attributes_;
std::list<restriction> constraints_;
std::vector<attribute> attributes_;
std::vector<restriction> constraints_;
};
}
#endif //MATADOR_OBJECT_HPP