forked from slicebit/qb
/
update_test.go
50 lines (38 loc) · 1.36 KB
/
update_test.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
package qb
import (
"github.com/stretchr/testify/assert"
"testing"
)
func TestUpdate(t *testing.T) {
sqlite := NewDialect("sqlite3")
sqlite.SetEscaping(true)
mysql := NewDialect("mysql")
mysql.SetEscaping(true)
postgres := NewDialect("postgres")
postgres.SetEscaping(true)
usersTable := Table(
"users",
Column("id", BigInt().NotNull()),
Column("email", Varchar().NotNull().Unique()),
PrimaryKey("email"),
)
var statement *Stmt
statement = Update(usersTable).
Values(map[string]interface{}{"email": "robert@de.niro"}).
Build(sqlite)
assert.Equal(t, statement.SQL(), "UPDATE users\nSET email = ?;")
assert.Equal(t, statement.Bindings(), []interface{}{"robert@de.niro"})
statement = Update(usersTable).
Values(map[string]interface{}{"email": "robert@de.niro"}).
Build(mysql)
assert.Equal(t, statement.SQL(), "UPDATE `users`\nSET `email` = ?;")
assert.Equal(t, statement.Bindings(), []interface{}{"robert@de.niro"})
statement = Update(usersTable).
Values(map[string]interface{}{"email": "robert@de.niro"}).
Where(Eq(usersTable.C("email"), "al@pacino")).
Returning("id", "email").
Build(postgres)
postgres.Reset()
assert.Equal(t, statement.SQL(), "UPDATE \"users\"\nSET \"email\" = $1\nWHERE (\"users\".\"email\" = $2)\nRETURNING \"id\", \"email\";")
assert.Equal(t, statement.Bindings(), []interface{}{"robert@de.niro", "al@pacino"})
}