forked from ecodeclub/eorm
-
Notifications
You must be signed in to change notification settings - Fork 0
/
assignment_test.go
76 lines (73 loc) · 2.05 KB
/
assignment_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
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
// Copyright 2021 ecodeclub
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
package eorm
import "fmt"
func ExampleAssign() {
db := memoryDB()
tm := &TestModel{}
examples := []struct {
assign Assignment
assignStr string
wantSQL string
wantArgs []interface{}
}{
{
assign: Assign("Age", 18),
assignStr: `Assign("Age", 18)`,
wantSQL: "UPDATE `test_model` SET `age`=?;",
wantArgs: []interface{}{18},
},
{
assign: Assign("Age", C("Id")),
assignStr: `Assign("Age", C("Id"))`,
wantSQL: "UPDATE `test_model` SET `age`=`id`;",
},
{
assign: Assign("Age", C("Age").Add(1)),
assignStr: `Assign("Age", C("Age").Add(1))`,
wantSQL: "UPDATE `test_model` SET `age`=`age`+?;",
wantArgs: []interface{}{1},
},
{
assign: Assign("Age", Raw("`age`+`id`+1")),
assignStr: "Assign(\"Age\", Raw(\"`age`+`id`+1\"))",
wantSQL: "UPDATE `test_model` SET `age`=`age`+`id`+1;",
},
}
for _, exp := range examples {
query, _ := NewUpdater[TestModel](db).Update(tm).Set(exp.assign).Build()
fmt.Printf(`
Assignment: %s
SQL: %s
Args: %v
`, exp.assignStr, query.SQL, query.Args)
}
// Output:
//
// Assignment: Assign("Age", 18)
// SQL: UPDATE `test_model` SET `age`=?;
// Args: [18]
//
// Assignment: Assign("Age", C("Id"))
// SQL: UPDATE `test_model` SET `age`=`id`;
// Args: []
//
// Assignment: Assign("Age", C("Age").Add(1))
// SQL: UPDATE `test_model` SET `age`=(`age`+?);
// Args: [1]
//
// Assignment: Assign("Age", Raw("`age`+`id`+1"))
// SQL: UPDATE `test_model` SET `age`=`age`+`id`+1;
// Args: []
}