collection_resolver progress

This commit is contained in:
Sascha Kühl
2026-01-29 17:23:16 +01:00
parent 602b77e67b
commit bcec740d60
17 changed files with 100 additions and 59 deletions
@@ -28,7 +28,8 @@ sql::record *create_prototype(const std::vector<object::attribute> &prototype) {
}
utils::result<sql::query_result<sql::record>, utils::error> fetchable_query::fetch_all(const sql::executor &exec) const {
query_builder compiler;
const auto ctx = compiler.compile(*context_, exec.dialect(), std::nullopt);
auto ctx = compiler.compile(*context_, exec.dialect(), std::nullopt);
ctx.resolver = exec.resolver();
return exec.fetch(ctx)
.and_then([](auto &&res) {
const auto prototype = res->prototype();
@@ -67,9 +68,10 @@ sql::query_context fetchable_query::compile(const sql::dialect &d) const {
return compiler.compile(*context_, d, std::nullopt);
}
utils::result<std::unique_ptr<sql::query_result_impl>, utils::error> fetchable_query::fetch(const sql::executor &exec) const {
utils::result<std::unique_ptr<sql::query_result_impl>, utils::error> fetchable_query::fetch(const sql::executor &exec, const std::type_index& index) const {
auto ctx = compile(exec.dialect());
ctx.resolver = exec.resolver();
ctx.result_type = index;
return exec.fetch(ctx);
}
@@ -9,12 +9,14 @@ detail::pk_reader::pk_reader(query_result_reader &reader)
query_result_impl::query_result_impl(std::unique_ptr<query_result_reader> &&reader,
std::vector<object::attribute> prototype,
const std::shared_ptr<sql::resolver_service>& resolver,
const std::shared_ptr<resolver_service>& resolver,
const std::type_index& result_type,
const size_t column_index)
: column_index_(column_index)
, prototype_(std::move(prototype))
, reader_(std::move(reader))
, resolver_(resolver)
, result_type_(result_type)
, id_reader_(*reader_)
, pk_reader_(*reader_) {
}