From 76bbf33db288244dc4e12e9fa78d476921ab6ebc Mon Sep 17 00:00:00 2001 From: Hein Date: Fri, 21 Nov 2025 11:49:08 +0200 Subject: [PATCH] Fixed SingleRecordAsObject true when handleRead with no id --- pkg/resolvespec/handler.go | 4 +++- pkg/restheadspec/handler.go | 10 ++++++++-- pkg/restheadspec/headers.go | 2 +- 3 files changed, 12 insertions(+), 4 deletions(-) diff --git a/pkg/resolvespec/handler.go b/pkg/resolvespec/handler.go index 5ded143..93b421e 100644 --- a/pkg/resolvespec/handler.go +++ b/pkg/resolvespec/handler.go @@ -199,7 +199,9 @@ func (h *Handler) handleRead(ctx context.Context, w common.ResponseWriter, id st // Apply column selection if len(options.Columns) > 0 { logger.Debug("Selecting columns: %v", options.Columns) - query = query.Column(options.Columns...) + for _, col := range options.Columns { + query = query.Column(reflection.ExtractSourceColumn(col)) + } } if len(options.ComputedColumns) > 0 { diff --git a/pkg/restheadspec/handler.go b/pkg/restheadspec/handler.go index a7bbc89..515c2e6 100644 --- a/pkg/restheadspec/handler.go +++ b/pkg/restheadspec/handler.go @@ -213,6 +213,10 @@ func (h *Handler) handleRead(ctx context.Context, w common.ResponseWriter, id st tableName := GetTableName(ctx) model := GetModel(ctx) + if id == "" { + options.SingleRecordAsObject = false + } + // Execute BeforeRead hooks hookCtx := &HookContext{ Context: ctx, @@ -299,7 +303,10 @@ func (h *Handler) handleRead(ctx context.Context, w common.ResponseWriter, id st // Apply column selection if len(options.Columns) > 0 { logger.Debug("Selecting columns: %v", options.Columns) - query = query.Column(options.Columns...) + for _, col := range options.Columns { + query = query.Column(reflection.ExtractSourceColumn(col)) + } + } // Apply expand (Just expand to Preload for now) @@ -652,7 +659,6 @@ func (h *Handler) applyPreloadWithRecursion(query common.SelectQuery, preload co sq = sq.Order(fmt.Sprintf("%s %s", sort.Column, sort.Direction)) } } - // Apply WHERE clause if len(preload.Where) > 0 { diff --git a/pkg/restheadspec/headers.go b/pkg/restheadspec/headers.go index 7f1debb..c9691c8 100644 --- a/pkg/restheadspec/headers.go +++ b/pkg/restheadspec/headers.go @@ -267,7 +267,7 @@ func (h *Handler) parseOptionsFromHeaders(r common.Request, model interface{}) E h.resolveRelationNamesInOptions(&options, model) } - //Always sort according to the primary key if no sorting is specified + // Always sort according to the primary key if no sorting is specified if len(options.Sort) == 0 { pkName := reflection.GetPrimaryKeyName(model) options.Sort = []common.SortOption{{Column: pkName, Direction: "ASC"}}