fixed table constructor with join and inverse join columns
This commit is contained in:
parent
12f8590634
commit
34a9a8aa4a
|
|
@ -18,7 +18,7 @@ TABLE_NAME##_table()\
|
||||||
: TABLE_NAME##_table(#TABLE_NAME) \
|
: TABLE_NAME##_table(#TABLE_NAME) \
|
||||||
{} \
|
{} \
|
||||||
TABLE_NAME##_table(const std::string& alias) \
|
TABLE_NAME##_table(const std::string& alias) \
|
||||||
: typed_table(#TABLE_NAME, alias, {MAP(FIELD_STRING, __VA_ARGS__)}) \
|
: typed_table(#TABLE_NAME, alias, {MAP(FIELD_STRING, __VA_ARGS__)}, {}, {}) \
|
||||||
MAP(INIT_FIELD, __VA_ARGS__) \
|
MAP(INIT_FIELD, __VA_ARGS__) \
|
||||||
{} \
|
{} \
|
||||||
MAP(FIELD, __VA_ARGS__) \
|
MAP(FIELD, __VA_ARGS__) \
|
||||||
|
|
|
||||||
|
|
@ -49,7 +49,7 @@ public:
|
||||||
[[nodiscard]] const table_column* inverse_join_column() const;
|
[[nodiscard]] const table_column* inverse_join_column() const;
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
table(std::string name, std::string alias, const std::vector<table_column>& columns);
|
table(std::string name, std::string alias, const std::vector<table_column>& columns, const std::string& join_column, const std::string& inverse_join_column);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
friend table_column;
|
friend table_column;
|
||||||
|
|
|
||||||
|
|
@ -9,19 +9,17 @@ table::table(const char* name)
|
||||||
{}
|
{}
|
||||||
|
|
||||||
table::table(const std::string& 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::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::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)
|
: table(name, name, columns, join_column, inverse_join_column) {
|
||||||
, join_column_index_(column_by_name(*this, join_column))
|
|
||||||
, inverse_join_column_index_(column_by_name(*this, 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))
|
: name_(std::move(name))
|
||||||
, alias_(std::move(alias))
|
, alias_(std::move(alias))
|
||||||
, columns_(columns) {
|
, 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()) {
|
if (columns_[i].is_primary_key()) {
|
||||||
pk_column_index_ = i;
|
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 {
|
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 {
|
const std::string & table::table_name() const {
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue