From c073067d7159b8b37d3e10534e1a8133e6f70d53 Mon Sep 17 00:00:00 2001 From: Nima Jalali Date: Wed, 22 Nov 2023 15:41:19 -0800 Subject: [PATCH] add correct support for single row sql queries in sqlRepo tpl --- foji/sqlRepo.go.tpl | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/foji/sqlRepo.go.tpl b/foji/sqlRepo.go.tpl index a64317b..079ccb6 100644 --- a/foji/sqlRepo.go.tpl +++ b/foji/sqlRepo.go.tpl @@ -71,13 +71,19 @@ func (r Repo) {{ .Name }}(ctx context.Context{{if gt (len .Params) 0}}, {{end -} return out, nil {{- else }} - var out {{$resultType}} - - err := r.db.QueryRow(ctx, query{{if gt (len .Params) 0}}, {{ csv (.Params.ByQuery.Names.Camel) }}{{end}}).Scan(&out) + rows, err := r.db.Query(ctx, query{{if gt (len .Params) 0}}, {{ csv (.Params.ByQuery.Names.Camel) }}{{end}}) if err != nil { - return out, fmt.Errorf("{{.Name}}:%w", err) + return {{ $resultType }}{}, fmt.Errorf("{{.Name}}:%w", err) } + out, err := pgx.CollectOneRow(rows, pgx.RowToStructByName[{{$resultType}}]) + if errors.Is(pgx.ErrNoRows, err) { + return {{ $resultType }}{}, nil + } + if err != nil { + return {{ $resultType }}{}, fmt.Errorf("{{.Name}}.RowTo:%w", err) + } + return out, nil {{- end }} }