From 1869ff3d75da96f763423ee52038ad8489e0e319 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mike=20Schw=C3=B6rer?= Date: Fri, 9 Feb 2024 15:20:46 +0100 Subject: [PATCH] v0.0.384 QuerySingleOpt --- goextVersion.go | 4 ++-- sq/scanner.go | 17 +++++++++++++++++ 2 files changed, 19 insertions(+), 2 deletions(-) diff --git a/goextVersion.go b/goextVersion.go index 4380b67..b7f8743 100644 --- a/goextVersion.go +++ b/goextVersion.go @@ -1,5 +1,5 @@ package goext -const GoextVersion = "0.0.383" +const GoextVersion = "0.0.384" -const GoextVersionTimestamp = "2024-02-09T15:17:51+0100" +const GoextVersionTimestamp = "2024-02-09T15:20:46+0100" diff --git a/sq/scanner.go b/sq/scanner.go index fd03ab7..9380982 100644 --- a/sq/scanner.go +++ b/sq/scanner.go @@ -103,6 +103,23 @@ func QuerySingle[TData any](ctx context.Context, q Queryable, sql string, pp PP, return data, nil } +func QuerySingleOpt[TData any](ctx context.Context, q Queryable, sqlstr string, pp PP, mode StructScanMode, sec StructScanSafety) (*TData, error) { + rows, err := q.Query(ctx, sqlstr, pp) + if err != nil { + return nil, err + } + + data, err := ScanSingle[TData](ctx, q, rows, mode, sec, true) + if errors.Is(err, sql.ErrNoRows) { + return nil, nil + } + if err != nil { + return nil, err + } + + return &data, nil +} + func QueryAll[TData any](ctx context.Context, q Queryable, sql string, pp PP, mode StructScanMode, sec StructScanSafety) ([]TData, error) { rows, err := q.Query(ctx, sql, pp) if err != nil {