1
2 package goqu_test
3
4 import (
5 "fmt"
6
7 "github.com/doug-martin/goqu/v9"
8 _ "github.com/doug-martin/goqu/v9/dialect/mysql"
9 )
10
11 func ExampleUpdate_withStruct() {
12 type item struct {
13 Address string `db:"address"`
14 Name string `db:"name"`
15 }
16 sql, args, _ := goqu.Update("items").Set(
17 item{Name: "Test", Address: "111 Test Addr"},
18 ).ToSQL()
19 fmt.Println(sql, args)
20
21
22
23 }
24
25 func ExampleUpdate_withGoquRecord() {
26 sql, args, _ := goqu.Update("items").Set(
27 goqu.Record{"name": "Test", "address": "111 Test Addr"},
28 ).ToSQL()
29 fmt.Println(sql, args)
30
31
32
33 }
34
35 func ExampleUpdate_withMap() {
36 sql, args, _ := goqu.Update("items").Set(
37 map[string]interface{}{"name": "Test", "address": "111 Test Addr"},
38 ).ToSQL()
39 fmt.Println(sql, args)
40
41
42
43 }
44
45 func ExampleUpdate_withSkipUpdateTag() {
46 type item struct {
47 Address string `db:"address"`
48 Name string `db:"name" goqu:"skipupdate"`
49 }
50 sql, args, _ := goqu.Update("items").Set(
51 item{Name: "Test", Address: "111 Test Addr"},
52 ).ToSQL()
53 fmt.Println(sql, args)
54
55
56
57 }
58
59 func ExampleUpdateDataset_Executor() {
60 db := getDB()
61 update := db.Update("goqu_user").
62 Where(goqu.C("first_name").Eq("Bob")).
63 Set(goqu.Record{"first_name": "Bobby"}).
64 Executor()
65
66 if r, err := update.Exec(); err != nil {
67 fmt.Println(err.Error())
68 } else {
69 c, _ := r.RowsAffected()
70 fmt.Printf("Updated %d users", c)
71 }
72
73
74
75 }
76
77 func ExampleUpdateDataset_Executor_returning() {
78 db := getDB()
79 var ids []int64
80 update := db.Update("goqu_user").
81 Set(goqu.Record{"last_name": "ucon"}).
82 Where(goqu.Ex{"last_name": "Yukon"}).
83 Returning("id").
84 Executor()
85 if err := update.ScanVals(&ids); err != nil {
86 fmt.Println(err.Error())
87 } else {
88 fmt.Printf("Updated users with ids %+v", ids)
89 }
90
91
92
93 }
94
95 func ExampleUpdateDataset_Returning() {
96 sql, _, _ := goqu.Update("test").
97 Set(goqu.Record{"foo": "bar"}).
98 Returning("id").
99 ToSQL()
100 fmt.Println(sql)
101 sql, _, _ = goqu.Update("test").
102 Set(goqu.Record{"foo": "bar"}).
103 Returning(goqu.T("test").All()).
104 ToSQL()
105 fmt.Println(sql)
106 sql, _, _ = goqu.Update("test").
107 Set(goqu.Record{"foo": "bar"}).
108 Returning("a", "b").
109 ToSQL()
110 fmt.Println(sql)
111
112
113
114
115 }
116
117 func ExampleUpdateDataset_With() {
118 sql, _, _ := goqu.Update("test").
119 With("some_vals(val)", goqu.From().Select(goqu.L("123"))).
120 Where(goqu.C("val").Eq(goqu.From("some_vals").Select("val"))).
121 Set(goqu.Record{"name": "Test"}).ToSQL()
122 fmt.Println(sql)
123
124
125
126 }
127
128 func ExampleUpdateDataset_WithRecursive() {
129 sql, _, _ := goqu.Update("nums").
130 WithRecursive("nums(x)", goqu.From().Select(goqu.L("1").As("num")).
131 UnionAll(goqu.From("nums").
132 Select(goqu.L("x+1").As("num")).Where(goqu.C("x").Lt(5)))).
133 Set(goqu.Record{"foo": goqu.T("nums").Col("num")}).
134 ToSQL()
135 fmt.Println(sql)
136
137
138 }
139
140 func ExampleUpdateDataset_Limit() {
141 ds := goqu.Dialect("mysql").
142 Update("test").
143 Set(goqu.Record{"foo": "bar"}).
144 Limit(10)
145 sql, _, _ := ds.ToSQL()
146 fmt.Println(sql)
147
148
149 }
150
151 func ExampleUpdateDataset_LimitAll() {
152 ds := goqu.Dialect("mysql").
153 Update("test").
154 Set(goqu.Record{"foo": "bar"}).
155 LimitAll()
156 sql, _, _ := ds.ToSQL()
157 fmt.Println(sql)
158
159
160 }
161
162 func ExampleUpdateDataset_ClearLimit() {
163 ds := goqu.Dialect("mysql").
164 Update("test").
165 Set(goqu.Record{"foo": "bar"}).
166 Limit(10)
167 sql, _, _ := ds.ClearLimit().ToSQL()
168 fmt.Println(sql)
169
170
171 }
172
173 func ExampleUpdateDataset_Order() {
174 ds := goqu.Dialect("mysql").
175 Update("test").
176 Set(goqu.Record{"foo": "bar"}).
177 Order(goqu.C("a").Asc())
178 sql, _, _ := ds.ToSQL()
179 fmt.Println(sql)
180
181
182 }
183
184 func ExampleUpdateDataset_OrderAppend() {
185 ds := goqu.Dialect("mysql").
186 Update("test").
187 Set(goqu.Record{"foo": "bar"}).
188 Order(goqu.C("a").Asc())
189 sql, _, _ := ds.OrderAppend(goqu.C("b").Desc().NullsLast()).ToSQL()
190 fmt.Println(sql)
191
192
193 }
194
195 func ExampleUpdateDataset_OrderPrepend() {
196 ds := goqu.Dialect("mysql").
197 Update("test").
198 Set(goqu.Record{"foo": "bar"}).
199 Order(goqu.C("a").Asc())
200
201 sql, _, _ := ds.OrderPrepend(goqu.C("b").Desc().NullsLast()).ToSQL()
202 fmt.Println(sql)
203
204
205 }
206
207 func ExampleUpdateDataset_ClearOrder() {
208 ds := goqu.Dialect("mysql").
209 Update("test").
210 Set(goqu.Record{"foo": "bar"}).
211 Order(goqu.C("a").Asc())
212 sql, _, _ := ds.ClearOrder().ToSQL()
213 fmt.Println(sql)
214
215
216 }
217
218 func ExampleUpdateDataset_From() {
219 ds := goqu.Update("table_one").
220 Set(goqu.Record{"foo": goqu.I("table_two.bar")}).
221 From("table_two").
222 Where(goqu.Ex{"table_one.id": goqu.I("table_two.id")})
223
224 sql, _, _ := ds.ToSQL()
225 fmt.Println(sql)
226
227
228 }
229
230 func ExampleUpdateDataset_From_postgres() {
231 dialect := goqu.Dialect("postgres")
232
233 ds := dialect.Update("table_one").
234 Set(goqu.Record{"foo": goqu.I("table_two.bar")}).
235 From("table_two").
236 Where(goqu.Ex{"table_one.id": goqu.I("table_two.id")})
237
238 sql, _, _ := ds.ToSQL()
239 fmt.Println(sql)
240
241
242 }
243
244 func ExampleUpdateDataset_From_mysql() {
245 dialect := goqu.Dialect("mysql")
246
247 ds := dialect.Update("table_one").
248 Set(goqu.Record{"foo": goqu.I("table_two.bar")}).
249 From("table_two").
250 Where(goqu.Ex{"table_one.id": goqu.I("table_two.id")})
251
252 sql, _, _ := ds.ToSQL()
253 fmt.Println(sql)
254
255
256 }
257
258 func ExampleUpdateDataset_Where() {
259
260 sql, _, _ := goqu.Update("test").
261 Set(goqu.Record{"foo": "bar"}).
262 Where(goqu.Ex{
263 "a": goqu.Op{"gt": 10},
264 "b": goqu.Op{"lt": 10},
265 "c": nil,
266 "d": []string{"a", "b", "c"},
267 }).ToSQL()
268 fmt.Println(sql)
269
270 sql, _, _ = goqu.Update("test").
271 Set(goqu.Record{"foo": "bar"}).
272 Where(goqu.ExOr{
273 "a": goqu.Op{"gt": 10},
274 "b": goqu.Op{"lt": 10},
275 "c": nil,
276 "d": []string{"a", "b", "c"},
277 }).ToSQL()
278 fmt.Println(sql)
279
280 sql, _, _ = goqu.Update("test").
281 Set(goqu.Record{"foo": "bar"}).
282 Where(
283 goqu.Or(
284 goqu.Ex{
285 "a": goqu.Op{"gt": 10},
286 "b": goqu.Op{"lt": 10},
287 },
288 goqu.Ex{
289 "c": nil,
290 "d": []string{"a", "b", "c"},
291 },
292 ),
293 ).ToSQL()
294 fmt.Println(sql)
295
296 sql, _, _ = goqu.Update("test").
297 Set(goqu.Record{"foo": "bar"}).
298 Where(
299 goqu.C("a").Gt(10),
300 goqu.C("b").Lt(10),
301 goqu.C("c").IsNull(),
302 goqu.C("d").In("a", "b", "c"),
303 ).ToSQL()
304 fmt.Println(sql)
305
306 sql, _, _ = goqu.Update("test").
307 Set(goqu.Record{"foo": "bar"}).
308 Where(
309 goqu.Or(
310 goqu.C("a").Gt(10),
311 goqu.And(
312 goqu.C("b").Lt(10),
313 goqu.C("c").IsNull(),
314 ),
315 ),
316 ).ToSQL()
317 fmt.Println(sql)
318
319
320
321
322
323
324 }
325
326 func ExampleUpdateDataset_Where_prepared() {
327
328 sql, args, _ := goqu.Update("test").
329 Prepared(true).
330 Set(goqu.Record{"foo": "bar"}).
331 Where(goqu.Ex{
332 "a": goqu.Op{"gt": 10},
333 "b": goqu.Op{"lt": 10},
334 "c": nil,
335 "d": []string{"a", "b", "c"},
336 }).ToSQL()
337 fmt.Println(sql, args)
338
339 sql, args, _ = goqu.Update("test").Prepared(true).
340 Set(goqu.Record{"foo": "bar"}).
341 Where(goqu.ExOr{
342 "a": goqu.Op{"gt": 10},
343 "b": goqu.Op{"lt": 10},
344 "c": nil,
345 "d": []string{"a", "b", "c"},
346 }).ToSQL()
347 fmt.Println(sql, args)
348
349 sql, args, _ = goqu.Update("test").Prepared(true).
350 Set(goqu.Record{"foo": "bar"}).
351 Where(
352 goqu.Or(
353 goqu.Ex{
354 "a": goqu.Op{"gt": 10},
355 "b": goqu.Op{"lt": 10},
356 },
357 goqu.Ex{
358 "c": nil,
359 "d": []string{"a", "b", "c"},
360 },
361 ),
362 ).ToSQL()
363 fmt.Println(sql, args)
364
365 sql, args, _ = goqu.Update("test").Prepared(true).
366 Set(goqu.Record{"foo": "bar"}).
367 Where(
368 goqu.C("a").Gt(10),
369 goqu.C("b").Lt(10),
370 goqu.C("c").IsNull(),
371 goqu.C("d").In("a", "b", "c"),
372 ).ToSQL()
373 fmt.Println(sql, args)
374
375 sql, args, _ = goqu.Update("test").Prepared(true).
376 Set(goqu.Record{"foo": "bar"}).
377 Where(
378 goqu.Or(
379 goqu.C("a").Gt(10),
380 goqu.And(
381 goqu.C("b").Lt(10),
382 goqu.C("c").IsNull(),
383 ),
384 ),
385 ).ToSQL()
386 fmt.Println(sql, args)
387
388
389
390
391
392
393 }
394
395 func ExampleUpdateDataset_ClearWhere() {
396 ds := goqu.
397 Update("test").
398 Set(goqu.Record{"foo": "bar"}).
399 Where(
400 goqu.Or(
401 goqu.C("a").Gt(10),
402 goqu.And(
403 goqu.C("b").Lt(10),
404 goqu.C("c").IsNull(),
405 ),
406 ),
407 )
408 sql, _, _ := ds.ClearWhere().ToSQL()
409 fmt.Println(sql)
410
411
412 }
413
414 func ExampleUpdateDataset_Table() {
415 ds := goqu.Update("test")
416 sql, _, _ := ds.Table("test2").Set(goqu.Record{"foo": "bar"}).ToSQL()
417 fmt.Println(sql)
418
419
420 }
421
422 func ExampleUpdateDataset_Table_aliased() {
423 ds := goqu.Update("test")
424 sql, _, _ := ds.Table(goqu.T("test").As("t")).Set(goqu.Record{"foo": "bar"}).ToSQL()
425 fmt.Println(sql)
426
427
428 }
429
430 func ExampleUpdateDataset_Set() {
431 type item struct {
432 Address string `db:"address"`
433 Name string `db:"name"`
434 }
435 sql, args, _ := goqu.Update("items").Set(
436 item{Name: "Test", Address: "111 Test Addr"},
437 ).ToSQL()
438 fmt.Println(sql, args)
439
440 sql, args, _ = goqu.Update("items").Set(
441 goqu.Record{"name": "Test", "address": "111 Test Addr"},
442 ).ToSQL()
443 fmt.Println(sql, args)
444
445 sql, args, _ = goqu.Update("items").Set(
446 map[string]interface{}{"name": "Test", "address": "111 Test Addr"},
447 ).ToSQL()
448 fmt.Println(sql, args)
449
450
451
452
453
454 }
455
456 func ExampleUpdateDataset_Set_struct() {
457 type item struct {
458 Address string `db:"address"`
459 Name string `db:"name"`
460 }
461 sql, args, _ := goqu.Update("items").Set(
462 item{Name: "Test", Address: "111 Test Addr"},
463 ).ToSQL()
464 fmt.Println(sql, args)
465
466
467
468 }
469
470 func ExampleUpdateDataset_Set_goquRecord() {
471 sql, args, _ := goqu.Update("items").Set(
472 goqu.Record{"name": "Test", "address": "111 Test Addr"},
473 ).ToSQL()
474 fmt.Println(sql, args)
475
476
477
478 }
479
480 func ExampleUpdateDataset_Set_map() {
481 sql, args, _ := goqu.Update("items").Set(
482 map[string]interface{}{"name": "Test", "address": "111 Test Addr"},
483 ).ToSQL()
484 fmt.Println(sql, args)
485
486
487
488 }
489
490 func ExampleUpdateDataset_Set_withSkipUpdateTag() {
491 type item struct {
492 Address string `db:"address"`
493 Name string `db:"name" goqu:"skipupdate"`
494 }
495 sql, args, _ := goqu.Update("items").Set(
496 item{Name: "Test", Address: "111 Test Addr"},
497 ).ToSQL()
498 fmt.Println(sql, args)
499
500
501
502 }
503
504 func ExampleUpdateDataset_Set_withDefaultIfEmptyTag() {
505 type item struct {
506 Address string `db:"address"`
507 Name string `db:"name" goqu:"defaultifempty"`
508 }
509 sql, args, _ := goqu.Update("items").Set(
510 item{Address: "111 Test Addr"},
511 ).ToSQL()
512 fmt.Println(sql, args)
513
514 sql, args, _ = goqu.Update("items").Set(
515 item{Name: "Bob Yukon", Address: "111 Test Addr"},
516 ).ToSQL()
517 fmt.Println(sql, args)
518
519
520
521
522 }
523
524 func ExampleUpdateDataset_Set_withNoTags() {
525 type item struct {
526 Address string
527 Name string
528 }
529 sql, args, _ := goqu.Update("items").Set(
530 item{Name: "Test", Address: "111 Test Addr"},
531 ).ToSQL()
532 fmt.Println(sql, args)
533
534
535
536 }
537
538 func ExampleUpdateDataset_Set_withEmbeddedStruct() {
539 type Address struct {
540 Street string `db:"address_street"`
541 State string `db:"address_state"`
542 }
543 type User struct {
544 Address
545 FirstName string
546 LastName string
547 }
548 ds := goqu.Update("user").Set(
549 User{Address: Address{Street: "111 Street", State: "NY"}, FirstName: "Greg", LastName: "Farley"},
550 )
551 updateSQL, args, _ := ds.ToSQL()
552 fmt.Println(updateSQL, args)
553
554
555
556 }
557
558 func ExampleUpdateDataset_Set_withIgnoredEmbedded() {
559 type Address struct {
560 Street string
561 State string
562 }
563 type User struct {
564 Address `db:"-"`
565 FirstName string
566 LastName string
567 }
568 ds := goqu.Update("user").Set(
569 User{Address: Address{Street: "111 Street", State: "NY"}, FirstName: "Greg", LastName: "Farley"},
570 )
571 updateSQL, args, _ := ds.ToSQL()
572 fmt.Println(updateSQL, args)
573
574
575
576 }
577
578 func ExampleUpdateDataset_Set_withNilEmbeddedPointer() {
579 type Address struct {
580 Street string
581 State string
582 }
583 type User struct {
584 *Address
585 FirstName string
586 LastName string
587 }
588 ds := goqu.Update("user").Set(
589 User{FirstName: "Greg", LastName: "Farley"},
590 )
591 updateSQL, args, _ := ds.ToSQL()
592 fmt.Println(updateSQL, args)
593
594
595
596 }
597
598 func ExampleUpdateDataset_ToSQL_prepared() {
599 type item struct {
600 Address string `db:"address"`
601 Name string `db:"name"`
602 }
603
604 sql, args, _ := goqu.From("items").Prepared(true).Update().Set(
605 item{Name: "Test", Address: "111 Test Addr"},
606 ).ToSQL()
607 fmt.Println(sql, args)
608
609 sql, args, _ = goqu.From("items").Prepared(true).Update().Set(
610 goqu.Record{"name": "Test", "address": "111 Test Addr"},
611 ).ToSQL()
612 fmt.Println(sql, args)
613
614 sql, args, _ = goqu.From("items").Prepared(true).Update().Set(
615 map[string]interface{}{"name": "Test", "address": "111 Test Addr"},
616 ).ToSQL()
617 fmt.Println(sql, args)
618
619
620
621
622 }
623
624 func ExampleUpdateDataset_Prepared() {
625 sql, args, _ := goqu.Update("items").Prepared(true).Set(
626 goqu.Record{"name": "Test", "address": "111 Test Addr"},
627 ).ToSQL()
628 fmt.Println(sql, args)
629
630
631
632 }
633
View as plain text