From b1c69a8a49549dc7d4b6ea60f80c268936ddb29a Mon Sep 17 00:00:00 2001 From: Ariel Mashraki Date: Mon, 20 Nov 2023 13:38:41 +0200 Subject: [PATCH] sql/internal/sqlx: add Builder.WrapErr --- sql/internal/sqlx/sqlx.go | 7 +++++++ sql/internal/sqlx/sqlx_test.go | 4 ++++ 2 files changed, 11 insertions(+) diff --git a/sql/internal/sqlx/sqlx.go b/sql/internal/sqlx/sqlx.go index 270da7f9551..6f8b2699228 100644 --- a/sql/internal/sqlx/sqlx.go +++ b/sql/internal/sqlx/sqlx.go @@ -441,6 +441,13 @@ func (b *Builder) Wrap(f func(b *Builder)) *Builder { return b } +// WrapErr wraps the written string with parentheses +func (b *Builder) WrapErr(f func(b *Builder) error) error { + var err error + b.Wrap(func(b *Builder) { err = f(b) }) + return err +} + // WrapIndent is like Wrap but with extra level of indentation. func (b *Builder) WrapIndent(f func(b *Builder)) *Builder { return b.Wrap(func(b *Builder) { diff --git a/sql/internal/sqlx/sqlx_test.go b/sql/internal/sqlx/sqlx_test.go index e26b9821334..db6de553546 100644 --- a/sql/internal/sqlx/sqlx_test.go +++ b/sql/internal/sqlx/sqlx_test.go @@ -5,6 +5,7 @@ package sqlx import ( + "errors" "strconv" "testing" @@ -59,6 +60,9 @@ func TestBuilder(t *testing.T) { }) }) require.Equal(t, `CREATE TABLE "users" ("a" int NOT NULL, "b" int NOT NULL, "c" int NOT NULL, PRIMARY KEY ("a", "b", "c"))`, b.String()) + + // WrapErr. + require.EqualError(t, b.WrapErr(func(*Builder) error { return errors.New("oops") }), "oops") } func TestBuilder_Qualifier(t *testing.T) {