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(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(FIELD, __VA_ARGS__) \
|
||||
|
|
|
|||
|
|
@ -49,7 +49,7 @@ public:
|
|||
[[nodiscard]] const table_column* inverse_join_column() const;
|
||||
|
||||
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:
|
||||
friend table_column;
|
||||
|
|
|
|||
|
|
@ -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 {
|
||||
|
|
|
|||
Loading…
Reference in New Issue