-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathmain.go
110 lines (94 loc) · 2.93 KB
/
main.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
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
package main
import (
"context"
"database/sql"
"fmt"
"time"
_ "github.com/lib/pq"
"github.com/volatiletech/null"
"github.com/volatiletech/sqlboiler/boil"
"github.com/volatiletech/sqlboiler/queries/qm"
"github.com/ken-aio/go-sqlboiler-sample/app/db"
)
func main() {
initDB()
//insert()
//update()
//delete()
//insertTx()
selectSample()
}
func initDB() {
dns := "user=postgres dbname=sampledb host=localhost sslmode=disable connect_timeout=10"
con, err := sql.Open("postgres", dns)
if err != nil {
panic(err)
}
// connection pool settings
con.SetMaxIdleConns(10)
con.SetMaxOpenConns(10)
con.SetConnMaxLifetime(300 * time.Second)
// global connection setting
boil.SetDB(con)
boil.DebugMode = true
}
func insert() {
user := db.User{Email: null.StringFrom("test@example.com"), PasswordDigest: null.StringFrom("digested-password")}
fmt.Printf("before user = %+v\n", user)
user.InsertGP(context.Background(), boil.Infer())
fmt.Printf("after user = %+v\n", user)
}
func update() {
user := db.User{ID: 1}
user.Email = null.StringFrom("update@example.com")
user.UpdateGP(context.Background(), boil.Infer())
}
func delete() {
user := db.User{ID: 1}
user.DeleteGP(context.Background())
}
func insertTx() {
ctx := context.Background()
tx, err := boil.BeginTx(ctx, nil)
if err != nil {
panic(err)
}
user := db.User{Email: null.StringFrom("test@example.com"), PasswordDigest: null.StringFrom("digested-password")}
fmt.Printf("before user = %+v\n", user)
err = user.Insert(ctx, tx, boil.Infer())
if err != nil {
tx.Rollback()
panic(err)
}
tx.Commit()
fmt.Printf("after user = %+v\n", user)
}
func selectSample() {
//users := db.Users().AllGP(context.Background())
//fmt.Printf("users = %+v\n", users)
//user := db.Users().OneGP(context.Background())
//fmt.Printf("user = %+v\n", user)
//users := db.Users(qm.InnerJoin("group_members on group_members.user_id = users.id")).AllGP(context.Background())
//fmt.Printf("users = %+v\n", users)
//type userMember struct {
// db.User `boil:",bind"`
// db.GroupMember `boil:",bind"`
//}
//var mem userMember
//db.Users(qm.Select("users.*, group_members.*"), qm.InnerJoin("group_members on group_members.user_id = users.id")).BindG(context.Background(), &mem)
//fmt.Printf("mem = %+v\n", mem)
//user := db.Users(qm.Load("GroupMembers.Group")).OneGP(context.Background())
//fmt.Printf("user = %+v\n", user)
//fmt.Printf("user.R.GroupMembers = %+v\n", user.R.GroupMembers)
//for _, mem := range user.R.GroupMembers {
// fmt.Printf("mem = %+v\n", mem)
// fmt.Printf("mem.R.Group = %+v\n", mem.R.Group)
//}
user := db.Users(qm.Load("GroupMembers", qm.Where("group_members.role = ?", "dummy")), qm.Load("GroupMembers.Group")).OneGP(context.Background())
fmt.Printf("user = %+v\n", user)
fmt.Printf("user.R.GroupMembers = %+v\n", user.R.GroupMembers)
for _, mem := range user.R.GroupMembers {
fmt.Printf("mem = %+v\n", mem)
fmt.Printf("mem.R.Group = %+v\n", mem.R.Group)
}
}