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};
}
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};
}
append_join(sql::column{table_info_stack_.top().get().name(), table_info_stack_.top().get().definition().primary_key()->name()}, {id, join_column});
append_join(sql::column{id, inverse_join_column}, sql::column{info->get().name(), pk->name()});
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>(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>
@ -248,8 +257,14 @@ public:
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(sql::column{id, join_columns.join_column}, sql::column{info->get().name(), pk->name()});
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>(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:
@ -292,7 +307,10 @@ void session_query_builder::on_foreign_object(const char *id, Pointer &, const u
if (!pk) {
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 {
push(id);
}