1 package goqu_test
2
3 import (
4 "fmt"
5 "time"
6
7 "github.com/DATA-DOG/go-sqlmock"
8 "github.com/doug-martin/goqu/v9"
9 _ "github.com/doug-martin/goqu/v9/dialect/mysql"
10 _ "github.com/doug-martin/goqu/v9/dialect/postgres"
11 _ "github.com/doug-martin/goqu/v9/dialect/sqlite3"
12 )
13
14
15 func ExampleDialect_datasetMysql() {
16
17
18 d := goqu.Dialect("mysql")
19 ds := d.From("test").Where(goqu.Ex{
20 "foo": "bar",
21 "baz": []int64{1, 2, 3},
22 }).Limit(10)
23
24 sql, args, _ := ds.ToSQL()
25 fmt.Println(sql, args)
26
27 sql, args, _ = ds.Prepared(true).ToSQL()
28 fmt.Println(sql, args)
29
30
31
32
33 }
34
35
36 func ExampleDialect_dbMysql() {
37
38
39 type item struct {
40 ID int64 `db:"id"`
41 Address string `db:"address"`
42 Name string `db:"name"`
43 }
44
45
46
47
48
49
50 mDB, mock, _ := sqlmock.New()
51
52 d := goqu.Dialect("mysql")
53
54 db := d.DB(mDB)
55
56
57 ds := db.From("items").Where(goqu.C("id").Eq(1))
58
59
60 mock.ExpectQuery("SELECT `address`, `id`, `name` FROM `items` WHERE \\(`id` = 1\\) LIMIT 1").
61 WillReturnRows(
62 sqlmock.NewRows([]string{"id", "address", "name"}).
63 FromCSVString("1, 111 Test Addr,Test1"),
64 )
65 var it item
66 found, err := ds.ScanStruct(&it)
67 fmt.Println(it, found, err)
68
69
70 mock.ExpectQuery("SELECT `address`, `id`, `name` FROM `items` WHERE \\(`id` = \\?\\) LIMIT \\?").
71 WithArgs(1, 1).
72 WillReturnRows(
73 sqlmock.NewRows([]string{"id", "address", "name"}).
74 FromCSVString("1, 111 Test Addr,Test1"),
75 )
76
77 found, err = ds.Prepared(true).ScanStruct(&it)
78 fmt.Println(it, found, err)
79
80
81
82
83 }
84
85
86 func ExampleDialect_datasetPostgres() {
87
88
89 d := goqu.Dialect("postgres")
90 ds := d.From("test").Where(goqu.Ex{
91 "foo": "bar",
92 "baz": []int64{1, 2, 3},
93 }).Limit(10)
94
95 sql, args, _ := ds.ToSQL()
96 fmt.Println(sql, args)
97
98 sql, args, _ = ds.Prepared(true).ToSQL()
99 fmt.Println(sql, args)
100
101
102
103
104 }
105
106
107 func ExampleDialect_dbPostgres() {
108
109
110 type item struct {
111 ID int64 `db:"id"`
112 Address string `db:"address"`
113 Name string `db:"name"`
114 }
115
116
117
118
119
120
121 mDB, mock, _ := sqlmock.New()
122
123 d := goqu.Dialect("postgres")
124
125 db := d.DB(mDB)
126
127
128 ds := db.From("items").Where(goqu.C("id").Eq(1))
129
130
131 mock.ExpectQuery(`SELECT "address", "id", "name" FROM "items" WHERE \("id" = 1\) LIMIT 1`).
132 WillReturnRows(
133 sqlmock.NewRows([]string{"id", "address", "name"}).
134 FromCSVString("1, 111 Test Addr,Test1"),
135 )
136 var it item
137 found, err := ds.ScanStruct(&it)
138 fmt.Println(it, found, err)
139
140
141 mock.ExpectQuery(`SELECT "address", "id", "name" FROM "items" WHERE \("id" = \$1\) LIMIT \$2`).
142 WithArgs(1, 1).
143 WillReturnRows(
144 sqlmock.NewRows([]string{"id", "address", "name"}).
145 FromCSVString("1, 111 Test Addr,Test1"),
146 )
147
148 found, err = ds.Prepared(true).ScanStruct(&it)
149 fmt.Println(it, found, err)
150
151
152
153
154 }
155
156
157 func ExampleDialect_datasetSqlite3() {
158
159
160 d := goqu.Dialect("sqlite3")
161 ds := d.From("test").Where(goqu.Ex{
162 "foo": "bar",
163 "baz": []int64{1, 2, 3},
164 }).Limit(10)
165
166 sql, args, _ := ds.ToSQL()
167 fmt.Println(sql, args)
168
169 sql, args, _ = ds.Prepared(true).ToSQL()
170 fmt.Println(sql, args)
171
172
173
174
175 }
176
177
178 func ExampleDialect_dbSqlite3() {
179
180 type item struct {
181 ID int64 `db:"id"`
182 Address string `db:"address"`
183 Name string `db:"name"`
184 }
185
186
187
188
189
190
191 mDB, mock, _ := sqlmock.New()
192
193 d := goqu.Dialect("sqlite3")
194
195 db := d.DB(mDB)
196
197
198 ds := db.From("items").Where(goqu.C("id").Eq(1))
199
200
201 mock.ExpectQuery("SELECT `address`, `id`, `name` FROM `items` WHERE \\(`id` = 1\\) LIMIT 1").
202 WillReturnRows(
203 sqlmock.NewRows([]string{"id", "address", "name"}).
204 FromCSVString("1, 111 Test Addr,Test1"),
205 )
206 var it item
207 found, err := ds.ScanStruct(&it)
208 fmt.Println(it, found, err)
209
210
211 mock.ExpectQuery("SELECT `address`, `id`, `name` FROM `items` WHERE \\(`id` = \\?\\) LIMIT \\?").
212 WithArgs(1, 1).
213 WillReturnRows(
214 sqlmock.NewRows([]string{"id", "address", "name"}).
215 FromCSVString("1, 111 Test Addr,Test1"),
216 )
217
218 found, err = ds.Prepared(true).ScanStruct(&it)
219 fmt.Println(it, found, err)
220
221
222
223
224 }
225
226 func ExampleSetTimeLocation() {
227 loc, err := time.LoadLocation("Asia/Shanghai")
228 if err != nil {
229 panic(err)
230 }
231
232 created, err := time.Parse(time.RFC3339, "2019-10-01T15:01:00Z")
233 if err != nil {
234 panic(err)
235 }
236
237
238 goqu.SetTimeLocation(loc)
239 ds := goqu.Insert("test").Rows(goqu.Record{
240 "address": "111 Address",
241 "name": "Bob Yukon",
242 "created": created,
243 })
244 sql, _, _ := ds.ToSQL()
245 fmt.Println(sql)
246
247
248 goqu.SetTimeLocation(time.UTC)
249 sql, _, _ = ds.ToSQL()
250 fmt.Println(sql)
251
252
253
254
255 }
256
View as plain text