fixed join columns

This commit is contained in:
Sascha Kühl 2025-02-07 12:52:30 +01:00
parent 2e5257a5fa
commit 81cd8eecb2
1 changed files with 24 additions and 6 deletions

View File

@ -198,7 +198,10 @@ public:
throw query_builder_exception{query_build_error::MissingPrimaryKey}; throw query_builder_exception{query_build_error::MissingPrimaryKey};
} }
append_join(sql::column{table_info_stack_.top().get().name(), table_info_stack_.top().get().definition().primary_key()->name()}, sql::column{info->get().name(), join_column}); append_join(
sql::column{std::make_shared<sql::table>(table_info_stack_.top().get().name()), table_info_stack_.top().get().definition().primary_key()->name()},
sql::column{std::make_shared<sql::table>(info->get().name()), join_column}
);
} }
} }
@ -222,8 +225,14 @@ public:
throw query_builder_exception{query_build_error::MissingPrimaryKey}; throw query_builder_exception{query_build_error::MissingPrimaryKey};
} }
append_join(sql::column{table_info_stack_.top().get().name(), table_info_stack_.top().get().definition().primary_key()->name()}, {id, join_column}); append_join(
append_join(sql::column{id, inverse_join_column}, sql::column{info->get().name(), pk->name()}); sql::column{std::make_shared<sql::table>(table_info_stack_.top().get().name()), table_info_stack_.top().get().definition().primary_key()->name()},
sql::column{std::make_shared<sql::table>(id), join_column}
);
append_join(
sql::column{std::make_shared<sql::table>(id), inverse_join_column},
sql::column{std::make_shared<sql::table>(info->get().name()), pk->name()}
);
} }
template<class ContainerType> template<class ContainerType>
@ -248,8 +257,14 @@ public:
const auto join_columns = join_column_collector_.collect<typename ContainerType::value_type::value_type>(); const auto join_columns = join_column_collector_.collect<typename ContainerType::value_type::value_type>();
append_join(sql::column{table_info_stack_.top().get().name(), table_info_stack_.top().get().definition().primary_key()->name()}, sql::column{id, join_columns.inverse_join_column}); append_join(
append_join(sql::column{id, join_columns.join_column}, sql::column{info->get().name(), pk->name()}); sql::column{std::make_shared<sql::table>(table_info_stack_.top().get().name()), table_info_stack_.top().get().definition().primary_key()->name()},
sql::column{std::make_shared<sql::table>(id), join_columns.inverse_join_column}
);
append_join(
sql::column{std::make_shared<sql::table>(id), join_columns.join_column},
sql::column{std::make_shared<sql::table>(info->get().name()), pk->name()}
);
} }
private: private:
@ -292,7 +307,10 @@ void session_query_builder::on_foreign_object(const char *id, Pointer &, const u
if (!pk) { if (!pk) {
throw query_builder_exception{query_build_error::MissingPrimaryKey}; throw query_builder_exception{query_build_error::MissingPrimaryKey};
} }
append_join(sql::column{table_info_stack_.top().get().name(), id}, sql::column{info->get().name(), pk->name()}); append_join(
sql::column{std::make_shared<sql::table>(table_info_stack_.top().get().name()), id},
sql::column{std::make_shared<sql::table>(info->get().name()), pk->name()}
);
} else { } else {
push(id); push(id);
} }