From ae9fdddf160b6c3f6dbd9c38405a06640e3633b3 Mon Sep 17 00:00:00 2001 From: Lann Martin Date: Sat, 9 May 2020 12:55:10 -0400 Subject: [PATCH] Add StatementBuilder.Where method --- statement.go | 7 +++++++ statement_test.go | 13 +++++++++++++ 2 files changed, 20 insertions(+) diff --git a/statement.go b/statement.go index 1265fe1..9420c67 100644 --- a/statement.go +++ b/statement.go @@ -41,6 +41,13 @@ func (b StatementBuilderType) RunWith(runner BaseRunner) StatementBuilderType { return setRunWith(b, runner).(StatementBuilderType) } +// Where adds WHERE expressions to the query. +// +// See SelectBuilder.Where for more information. +func (b StatementBuilderType) Where(pred interface{}, args ...interface{}) StatementBuilderType { + return builder.Append(b, "WhereParts", newWherePart(pred, args...)).(StatementBuilderType) +} + // StatementBuilder is a parent builder for other builders, e.g. SelectBuilder. var StatementBuilder = StatementBuilderType(builder.EmptyBuilder).PlaceholderFormat(Question) diff --git a/statement_test.go b/statement_test.go index 4f3e5f3..3c93360 100644 --- a/statement_test.go +++ b/statement_test.go @@ -66,3 +66,16 @@ func TestRunWithBaseRunnerQueryRowError(t *testing.T) { assert.Error(t, RunnerNotQueryRunner, sb.Select("test").QueryRow().Scan(nil)) } + +func TestStatementBuilderWhere(t *testing.T) { + sb := StatementBuilder.Where("x = ?", 1) + + sql, args, err := sb.Select("test").Where("y = ?", 2).ToSql() + assert.NoError(t, err) + + expectedSql := "SELECT test WHERE x = ? AND y = ?" + assert.Equal(t, expectedSql, sql) + + expectedArgs := []interface{}{1, 2} + assert.Equal(t, expectedArgs, args) +}