fixed table constructor with join and inverse join columns

This commit is contained in:
2026-06-02 16:43:31 +02:00
parent 12f8590634
commit 34a9a8aa4a
3 changed files with 13 additions and 9 deletions
+11 -7
View File
@@ -9,19 +9,17 @@ table::table(const char* name)
{}
table::table(const std::string& name)
: table(name, name, {}) {}
: table(name, name, {}, {}, {}) {}
table::table(const std::string& name, const std::vector<table_column> &columns)
: table(name, name, columns) {
: table(name, name, columns, {}, {}) {
}
table::table(const std::string& name, const std::vector<table_column>& columns, const std::string& join_column, const std::string& inverse_join_column)
: table(name, name, columns)
, join_column_index_(column_by_name(*this, join_column))
, inverse_join_column_index_(column_by_name(*this, inverse_join_column)){
: table(name, name, columns, join_column, inverse_join_column) {
}
table::table(std::string name, std::string alias, const std::vector<table_column> &columns)
table::table(std::string name, std::string alias, const std::vector<table_column> &columns, const std::string& join_column, const std::string& inverse_join_column)
: name_(std::move(name))
, alias_(std::move(alias))
, columns_(columns) {
@@ -30,6 +28,12 @@ table::table(std::string name, std::string alias, const std::vector<table_column
if (columns_[i].is_primary_key()) {
pk_column_index_ = i;
}
if (columns_[i].column_name() == join_column) {
join_column_index_ = i;
}
if (columns_[i].column_name() == inverse_join_column) {
inverse_join_column_index_ = i;
}
}
}
@@ -71,7 +75,7 @@ bool table::operator==(const table& x) const {
}
table table::as(const std::string &alias) const {
return { name_, alias, columns_ };
return { name_, alias, columns_, join_column_index_ > -1 ? join_column()->name() : std::string{}, inverse_join_column_index_ > -1 ? inverse_join_column()->name() : std::string{}};
}
const std::string & table::table_name() const {