Skip to content

Commit ae9fddd

Browse files
committed
Add StatementBuilder.Where method
1 parent ddedf15 commit ae9fddd

File tree

2 files changed

+20
-0
lines changed

2 files changed

+20
-0
lines changed

statement.go

+7
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,13 @@ func (b StatementBuilderType) RunWith(runner BaseRunner) StatementBuilderType {
4141
return setRunWith(b, runner).(StatementBuilderType)
4242
}
4343

44+
// Where adds WHERE expressions to the query.
45+
//
46+
// See SelectBuilder.Where for more information.
47+
func (b StatementBuilderType) Where(pred interface{}, args ...interface{}) StatementBuilderType {
48+
return builder.Append(b, "WhereParts", newWherePart(pred, args...)).(StatementBuilderType)
49+
}
50+
4451
// StatementBuilder is a parent builder for other builders, e.g. SelectBuilder.
4552
var StatementBuilder = StatementBuilderType(builder.EmptyBuilder).PlaceholderFormat(Question)
4653

statement_test.go

+13
Original file line numberDiff line numberDiff line change
@@ -66,3 +66,16 @@ func TestRunWithBaseRunnerQueryRowError(t *testing.T) {
6666
assert.Error(t, RunnerNotQueryRunner, sb.Select("test").QueryRow().Scan(nil))
6767

6868
}
69+
70+
func TestStatementBuilderWhere(t *testing.T) {
71+
sb := StatementBuilder.Where("x = ?", 1)
72+
73+
sql, args, err := sb.Select("test").Where("y = ?", 2).ToSql()
74+
assert.NoError(t, err)
75+
76+
expectedSql := "SELECT test WHERE x = ? AND y = ?"
77+
assert.Equal(t, expectedSql, sql)
78+
79+
expectedArgs := []interface{}{1, 2}
80+
assert.Equal(t, expectedArgs, args)
81+
}

0 commit comments

Comments
 (0)