1
2 package goqu_test
3
4 import (
5 goSQL "database/sql"
6 "fmt"
7 "os"
8 "regexp"
9 "time"
10
11 "github.com/doug-martin/goqu/v9"
12 "github.com/doug-martin/goqu/v9/exp"
13 "github.com/lib/pq"
14 )
15
16 const schema = `
17 DROP TABLE IF EXISTS "user_role";
18 DROP TABLE IF EXISTS "goqu_user";
19 CREATE TABLE "goqu_user" (
20 "id" SERIAL PRIMARY KEY NOT NULL,
21 "first_name" VARCHAR(45) NOT NULL,
22 "last_name" VARCHAR(45) NOT NULL,
23 "created" TIMESTAMP NOT NULL DEFAULT now()
24 );
25 CREATE TABLE "user_role" (
26 "id" SERIAL PRIMARY KEY NOT NULL,
27 "user_id" BIGINT NOT NULL REFERENCES goqu_user(id) ON DELETE CASCADE,
28 "name" VARCHAR(45) NOT NULL,
29 "created" TIMESTAMP NOT NULL DEFAULT now()
30 );
31 `
32
33 const defaultDBURI = "postgres://postgres:@localhost:5435/goqupostgres?sslmode=disable"
34
35 var goquDB *goqu.Database
36
37 func getDB() *goqu.Database {
38 if goquDB == nil {
39 dbURI := os.Getenv("PG_URI")
40 if dbURI == "" {
41 dbURI = defaultDBURI
42 }
43 uri, err := pq.ParseURL(dbURI)
44 if err != nil {
45 panic(err)
46 }
47 pdb, err := goSQL.Open("postgres", uri)
48 if err != nil {
49 panic(err)
50 }
51 goquDB = goqu.New("postgres", pdb)
52 }
53
54 if _, err := goquDB.Exec(schema); err != nil {
55 panic(err)
56 }
57 type goquUser struct {
58 ID int64 `db:"id" goqu:"skipinsert"`
59 FirstName string `db:"first_name"`
60 LastName string `db:"last_name"`
61 Created time.Time `db:"created" goqu:"skipupdate"`
62 }
63
64 users := []goquUser{
65 {FirstName: "Bob", LastName: "Yukon"},
66 {FirstName: "Sally", LastName: "Yukon"},
67 {FirstName: "Vinita", LastName: "Yukon"},
68 {FirstName: "John", LastName: "Doe"},
69 }
70 var userIds []int64
71 err := goquDB.Insert("goqu_user").Rows(users).Returning("id").Executor().ScanVals(&userIds)
72 if err != nil {
73 panic(err)
74 }
75 type userRole struct {
76 ID int64 `db:"id" goqu:"skipinsert"`
77 UserID int64 `db:"user_id"`
78 Name string `db:"name"`
79 Created time.Time `db:"created" goqu:"skipupdate"`
80 }
81
82 roles := []userRole{
83 {UserID: userIds[0], Name: "Admin"},
84 {UserID: userIds[1], Name: "Manager"},
85 {UserID: userIds[2], Name: "Manager"},
86 {UserID: userIds[3], Name: "User"},
87 }
88 _, err = goquDB.Insert("user_role").Rows(roles).Executor().Exec()
89 if err != nil {
90 panic(err)
91 }
92 return goquDB
93 }
94
95 func ExampleSelectDataset() {
96 ds := goqu.From("test").
97 Select(goqu.COUNT("*")).
98 InnerJoin(goqu.T("test2"), goqu.On(goqu.I("test.fkey").Eq(goqu.I("test2.id")))).
99 LeftJoin(goqu.T("test3"), goqu.On(goqu.I("test2.fkey").Eq(goqu.I("test3.id")))).
100 Where(
101 goqu.Ex{
102 "test.name": goqu.Op{
103 "like": regexp.MustCompile("^[ab]"),
104 },
105 "test2.amount": goqu.Op{
106 "isNot": nil,
107 },
108 },
109 goqu.ExOr{
110 "test3.id": nil,
111 "test3.status": []string{"passed", "active", "registered"},
112 }).
113 Order(goqu.I("test.created").Desc().NullsLast()).
114 GroupBy(goqu.I("test.user_id")).
115 Having(goqu.AVG("test3.age").Gt(10))
116
117 sql, args, _ := ds.ToSQL()
118 fmt.Println(sql, args)
119
120 sql, args, _ = ds.Prepared(true).ToSQL()
121 fmt.Println(sql, args)
122
123
124
125
126 }
127
128 func ExampleSelect() {
129 sql, _, _ := goqu.Select(goqu.L("NOW()")).ToSQL()
130 fmt.Println(sql)
131
132
133
134 }
135
136 func ExampleFrom() {
137 sql, args, _ := goqu.From("test").ToSQL()
138 fmt.Println(sql, args)
139
140
141
142 }
143
144 func ExampleSelectDataset_As() {
145 ds := goqu.From("test").As("t")
146 sql, _, _ := goqu.From(ds).ToSQL()
147 fmt.Println(sql)
148
149 }
150
151 func ExampleSelectDataset_Union() {
152 sql, _, _ := goqu.From("test").
153 Union(goqu.From("test2")).
154 ToSQL()
155 fmt.Println(sql)
156
157 sql, _, _ = goqu.From("test").
158 Limit(1).
159 Union(goqu.From("test2")).
160 ToSQL()
161 fmt.Println(sql)
162
163 sql, _, _ = goqu.From("test").
164 Limit(1).
165 Union(goqu.From("test2").
166 Order(goqu.C("id").Desc())).
167 ToSQL()
168 fmt.Println(sql)
169
170
171
172
173 }
174
175 func ExampleSelectDataset_UnionAll() {
176 sql, _, _ := goqu.From("test").
177 UnionAll(goqu.From("test2")).
178 ToSQL()
179 fmt.Println(sql)
180 sql, _, _ = goqu.From("test").
181 Limit(1).
182 UnionAll(goqu.From("test2")).
183 ToSQL()
184 fmt.Println(sql)
185 sql, _, _ = goqu.From("test").
186 Limit(1).
187 UnionAll(goqu.From("test2").
188 Order(goqu.C("id").Desc())).
189 ToSQL()
190 fmt.Println(sql)
191
192
193
194
195 }
196
197 func ExampleSelectDataset_With() {
198 sql, _, _ := goqu.From("one").
199 With("one", goqu.From().Select(goqu.L("1"))).
200 Select(goqu.Star()).
201 ToSQL()
202 fmt.Println(sql)
203 sql, _, _ = goqu.From("derived").
204 With("intermed", goqu.From("test").Select(goqu.Star()).Where(goqu.C("x").Gte(5))).
205 With("derived", goqu.From("intermed").Select(goqu.Star()).Where(goqu.C("x").Lt(10))).
206 Select(goqu.Star()).
207 ToSQL()
208 fmt.Println(sql)
209 sql, _, _ = goqu.From("multi").
210 With("multi(x,y)", goqu.From().Select(goqu.L("1"), goqu.L("2"))).
211 Select(goqu.C("x"), goqu.C("y")).
212 ToSQL()
213 fmt.Println(sql)
214
215
216
217
218
219 }
220
221 func ExampleSelectDataset_With_insertDataset() {
222 insertDs := goqu.Insert("foo").Rows(goqu.Record{"user_id": 10}).Returning("id")
223
224 ds := goqu.From("bar").
225 With("ins", insertDs).
226 Select("bar_name").
227 Where(goqu.Ex{"bar.user_id": goqu.I("ins.user_id")})
228
229 sql, _, _ := ds.ToSQL()
230 fmt.Println(sql)
231
232 sql, args, _ := ds.Prepared(true).ToSQL()
233 fmt.Println(sql, args)
234
235
236
237
238 }
239
240 func ExampleSelectDataset_With_updateDataset() {
241 updateDs := goqu.Update("foo").Set(goqu.Record{"bar": "baz"}).Returning("id")
242
243 ds := goqu.From("bar").
244 With("upd", updateDs).
245 Select("bar_name").
246 Where(goqu.Ex{"bar.user_id": goqu.I("upd.user_id")})
247
248 sql, _, _ := ds.ToSQL()
249 fmt.Println(sql)
250
251 sql, args, _ := ds.Prepared(true).ToSQL()
252 fmt.Println(sql, args)
253
254
255
256
257 }
258
259 func ExampleSelectDataset_With_deleteDataset() {
260 deleteDs := goqu.Delete("foo").Where(goqu.Ex{"bar": "baz"}).Returning("id")
261
262 ds := goqu.From("bar").
263 With("del", deleteDs).
264 Select("bar_name").
265 Where(goqu.Ex{"bar.user_id": goqu.I("del.user_id")})
266
267 sql, _, _ := ds.ToSQL()
268 fmt.Println(sql)
269
270 sql, args, _ := ds.Prepared(true).ToSQL()
271 fmt.Println(sql, args)
272
273
274
275 }
276
277 func ExampleSelectDataset_WithRecursive() {
278 sql, _, _ := goqu.From("nums").
279 WithRecursive("nums(x)",
280 goqu.From().Select(goqu.L("1")).
281 UnionAll(goqu.From("nums").
282 Select(goqu.L("x+1")).Where(goqu.C("x").Lt(5)))).
283 ToSQL()
284 fmt.Println(sql)
285
286
287 }
288
289 func ExampleSelectDataset_Intersect() {
290 sql, _, _ := goqu.From("test").
291 Intersect(goqu.From("test2")).
292 ToSQL()
293 fmt.Println(sql)
294 sql, _, _ = goqu.From("test").
295 Limit(1).
296 Intersect(goqu.From("test2")).
297 ToSQL()
298 fmt.Println(sql)
299 sql, _, _ = goqu.From("test").
300 Limit(1).
301 Intersect(goqu.From("test2").
302 Order(goqu.C("id").Desc())).
303 ToSQL()
304 fmt.Println(sql)
305
306
307
308
309 }
310
311 func ExampleSelectDataset_IntersectAll() {
312 sql, _, _ := goqu.From("test").
313 IntersectAll(goqu.From("test2")).
314 ToSQL()
315 fmt.Println(sql)
316 sql, _, _ = goqu.From("test").
317 Limit(1).
318 IntersectAll(goqu.From("test2")).
319 ToSQL()
320 fmt.Println(sql)
321 sql, _, _ = goqu.From("test").
322 Limit(1).
323 IntersectAll(goqu.From("test2").
324 Order(goqu.C("id").Desc())).
325 ToSQL()
326 fmt.Println(sql)
327
328
329
330
331 }
332
333 func ExampleSelectDataset_ClearOffset() {
334 ds := goqu.From("test").
335 Offset(2)
336 sql, _, _ := ds.
337 ClearOffset().
338 ToSQL()
339 fmt.Println(sql)
340
341
342 }
343
344 func ExampleSelectDataset_Offset() {
345 ds := goqu.From("test").Offset(2)
346 sql, _, _ := ds.ToSQL()
347 fmt.Println(sql)
348
349
350 }
351
352 func ExampleSelectDataset_Limit() {
353 ds := goqu.From("test").Limit(10)
354 sql, _, _ := ds.ToSQL()
355 fmt.Println(sql)
356
357
358 }
359
360 func ExampleSelectDataset_LimitAll() {
361 ds := goqu.From("test").LimitAll()
362 sql, _, _ := ds.ToSQL()
363 fmt.Println(sql)
364
365
366 }
367
368 func ExampleSelectDataset_ClearLimit() {
369 ds := goqu.From("test").Limit(10)
370 sql, _, _ := ds.ClearLimit().ToSQL()
371 fmt.Println(sql)
372
373
374 }
375
376 func ExampleSelectDataset_Order() {
377 ds := goqu.From("test").Order(goqu.C("a").Asc())
378 sql, _, _ := ds.ToSQL()
379 fmt.Println(sql)
380
381
382 }
383
384 func ExampleSelectDataset_Order_caseExpression() {
385 ds := goqu.From("test").Order(goqu.Case().When(goqu.C("num").Gt(10), 0).Else(1).Asc())
386 sql, _, _ := ds.ToSQL()
387 fmt.Println(sql)
388
389
390 }
391
392 func ExampleSelectDataset_OrderAppend() {
393 ds := goqu.From("test").Order(goqu.C("a").Asc())
394 sql, _, _ := ds.OrderAppend(goqu.C("b").Desc().NullsLast()).ToSQL()
395 fmt.Println(sql)
396
397
398 }
399
400 func ExampleSelectDataset_OrderPrepend() {
401 ds := goqu.From("test").Order(goqu.C("a").Asc())
402 sql, _, _ := ds.OrderPrepend(goqu.C("b").Desc().NullsLast()).ToSQL()
403 fmt.Println(sql)
404
405
406 }
407
408 func ExampleSelectDataset_ClearOrder() {
409 ds := goqu.From("test").Order(goqu.C("a").Asc())
410 sql, _, _ := ds.ClearOrder().ToSQL()
411 fmt.Println(sql)
412
413
414 }
415
416 func ExampleSelectDataset_GroupBy() {
417 sql, _, _ := goqu.From("test").
418 Select(goqu.SUM("income").As("income_sum")).
419 GroupBy("age").
420 ToSQL()
421 fmt.Println(sql)
422
423
424 }
425
426 func ExampleSelectDataset_GroupByAppend() {
427 ds := goqu.From("test").
428 Select(goqu.SUM("income").As("income_sum")).
429 GroupBy("age")
430 sql, _, _ := ds.
431 GroupByAppend("job").
432 ToSQL()
433 fmt.Println(sql)
434
435 sql, _, _ = ds.ToSQL()
436 fmt.Println(sql)
437
438
439
440 }
441
442 func ExampleSelectDataset_Having() {
443 sql, _, _ := goqu.From("test").Having(goqu.SUM("income").Gt(1000)).ToSQL()
444 fmt.Println(sql)
445 sql, _, _ = goqu.From("test").GroupBy("age").Having(goqu.SUM("income").Gt(1000)).ToSQL()
446 fmt.Println(sql)
447
448
449
450 }
451
452 func ExampleSelectDataset_Window() {
453 ds := goqu.From("test").
454 Select(goqu.ROW_NUMBER().Over(goqu.W().PartitionBy("a").OrderBy(goqu.I("b").Asc())))
455 query, args, _ := ds.ToSQL()
456 fmt.Println(query, args)
457
458 ds = goqu.From("test").
459 Select(goqu.ROW_NUMBER().OverName(goqu.I("w"))).
460 Window(goqu.W("w").PartitionBy("a").OrderBy(goqu.I("b").Asc()))
461 query, args, _ = ds.ToSQL()
462 fmt.Println(query, args)
463
464 ds = goqu.From("test").
465 Select(goqu.ROW_NUMBER().OverName(goqu.I("w1"))).
466 Window(
467 goqu.W("w1").PartitionBy("a"),
468 goqu.W("w").Inherit("w1").OrderBy(goqu.I("b").Asc()),
469 )
470 query, args, _ = ds.ToSQL()
471 fmt.Println(query, args)
472
473 ds = goqu.From("test").
474 Select(goqu.ROW_NUMBER().Over(goqu.W().Inherit("w").OrderBy("b"))).
475 Window(goqu.W("w").PartitionBy("a"))
476 query, args, _ = ds.ToSQL()
477 fmt.Println(query, args)
478
479
480
481
482
483 }
484
485 func ExampleSelectDataset_Where() {
486
487 sql, _, _ := goqu.From("test").Where(goqu.Ex{
488 "a": goqu.Op{"gt": 10},
489 "b": goqu.Op{"lt": 10},
490 "c": nil,
491 "d": []string{"a", "b", "c"},
492 }).ToSQL()
493 fmt.Println(sql)
494
495 sql, _, _ = goqu.From("test").Where(goqu.ExOr{
496 "a": goqu.Op{"gt": 10},
497 "b": goqu.Op{"lt": 10},
498 "c": nil,
499 "d": []string{"a", "b", "c"},
500 }).ToSQL()
501 fmt.Println(sql)
502
503 sql, _, _ = goqu.From("test").Where(
504 goqu.Or(
505 goqu.Ex{
506 "a": goqu.Op{"gt": 10},
507 "b": goqu.Op{"lt": 10},
508 },
509 goqu.Ex{
510 "c": nil,
511 "d": []string{"a", "b", "c"},
512 },
513 ),
514 ).ToSQL()
515 fmt.Println(sql)
516
517 sql, _, _ = goqu.From("test").Where(
518 goqu.C("a").Gt(10),
519 goqu.C("b").Lt(10),
520 goqu.C("c").IsNull(),
521 goqu.C("d").In("a", "b", "c"),
522 ).ToSQL()
523 fmt.Println(sql)
524
525 sql, _, _ = goqu.From("test").Where(
526 goqu.Or(
527 goqu.C("a").Gt(10),
528 goqu.And(
529 goqu.C("b").Lt(10),
530 goqu.C("c").IsNull(),
531 ),
532 ),
533 ).ToSQL()
534 fmt.Println(sql)
535
536
537
538
539
540
541 }
542
543 func ExampleSelectDataset_Where_prepared() {
544
545 sql, args, _ := goqu.From("test").Prepared(true).Where(goqu.Ex{
546 "a": goqu.Op{"gt": 10},
547 "b": goqu.Op{"lt": 10},
548 "c": nil,
549 "d": []string{"a", "b", "c"},
550 }).ToSQL()
551 fmt.Println(sql, args)
552
553 sql, args, _ = goqu.From("test").Prepared(true).Where(goqu.ExOr{
554 "a": goqu.Op{"gt": 10},
555 "b": goqu.Op{"lt": 10},
556 "c": nil,
557 "d": []string{"a", "b", "c"},
558 }).ToSQL()
559 fmt.Println(sql, args)
560
561 sql, args, _ = goqu.From("test").Prepared(true).Where(
562 goqu.Or(
563 goqu.Ex{
564 "a": goqu.Op{"gt": 10},
565 "b": goqu.Op{"lt": 10},
566 },
567 goqu.Ex{
568 "c": nil,
569 "d": []string{"a", "b", "c"},
570 },
571 ),
572 ).ToSQL()
573 fmt.Println(sql, args)
574
575 sql, args, _ = goqu.From("test").Prepared(true).Where(
576 goqu.C("a").Gt(10),
577 goqu.C("b").Lt(10),
578 goqu.C("c").IsNull(),
579 goqu.C("d").In("a", "b", "c"),
580 ).ToSQL()
581 fmt.Println(sql, args)
582
583 sql, args, _ = goqu.From("test").Prepared(true).Where(
584 goqu.Or(
585 goqu.C("a").Gt(10),
586 goqu.And(
587 goqu.C("b").Lt(10),
588 goqu.C("c").IsNull(),
589 ),
590 ),
591 ).ToSQL()
592 fmt.Println(sql, args)
593
594
595
596
597
598
599 }
600
601 func ExampleSelectDataset_ClearWhere() {
602 ds := goqu.From("test").Where(
603 goqu.Or(
604 goqu.C("a").Gt(10),
605 goqu.And(
606 goqu.C("b").Lt(10),
607 goqu.C("c").IsNull(),
608 ),
609 ),
610 )
611 sql, _, _ := ds.ClearWhere().ToSQL()
612 fmt.Println(sql)
613
614
615 }
616
617 func ExampleSelectDataset_Join() {
618 sql, _, _ := goqu.From("test").Join(
619 goqu.T("test2"),
620 goqu.On(goqu.Ex{"test.fkey": goqu.I("test2.Id")}),
621 ).ToSQL()
622 fmt.Println(sql)
623
624 sql, _, _ = goqu.From("test").Join(goqu.T("test2"), goqu.Using("common_column")).ToSQL()
625 fmt.Println(sql)
626
627 sql, _, _ = goqu.From("test").Join(
628 goqu.From("test2").Where(goqu.C("amount").Gt(0)),
629 goqu.On(goqu.I("test.fkey").Eq(goqu.T("test2").Col("Id"))),
630 ).ToSQL()
631 fmt.Println(sql)
632
633 sql, _, _ = goqu.From("test").Join(
634 goqu.From("test2").Where(goqu.C("amount").Gt(0)).As("t"),
635 goqu.On(goqu.T("test").Col("fkey").Eq(goqu.T("t").Col("Id"))),
636 ).ToSQL()
637 fmt.Println(sql)
638
639
640
641
642
643 }
644
645 func ExampleSelectDataset_InnerJoin() {
646 sql, _, _ := goqu.From("test").InnerJoin(
647 goqu.T("test2"),
648 goqu.On(goqu.Ex{
649 "test.fkey": goqu.I("test2.Id"),
650 }),
651 ).ToSQL()
652 fmt.Println(sql)
653
654 sql, _, _ = goqu.From("test").InnerJoin(
655 goqu.T("test2"),
656 goqu.Using("common_column"),
657 ).ToSQL()
658 fmt.Println(sql)
659
660 sql, _, _ = goqu.From("test").InnerJoin(
661 goqu.From("test2").Where(goqu.C("amount").Gt(0)),
662 goqu.On(goqu.I("test.fkey").Eq(goqu.I("test2.Id"))),
663 ).ToSQL()
664 fmt.Println(sql)
665
666 sql, _, _ = goqu.From("test").InnerJoin(
667 goqu.From("test2").Where(goqu.C("amount").Gt(0)).As("t"),
668 goqu.On(goqu.I("test.fkey").Eq(goqu.I("t.Id"))),
669 ).ToSQL()
670 fmt.Println(sql)
671
672
673
674
675
676 }
677
678 func ExampleSelectDataset_FullOuterJoin() {
679 sql, _, _ := goqu.From("test").FullOuterJoin(
680 goqu.T("test2"),
681 goqu.On(goqu.Ex{
682 "test.fkey": goqu.I("test2.Id"),
683 }),
684 ).ToSQL()
685 fmt.Println(sql)
686
687 sql, _, _ = goqu.From("test").FullOuterJoin(
688 goqu.T("test2"),
689 goqu.Using("common_column"),
690 ).ToSQL()
691 fmt.Println(sql)
692
693 sql, _, _ = goqu.From("test").FullOuterJoin(
694 goqu.From("test2").Where(goqu.C("amount").Gt(0)),
695 goqu.On(goqu.I("test.fkey").Eq(goqu.I("test2.Id"))),
696 ).ToSQL()
697 fmt.Println(sql)
698
699 sql, _, _ = goqu.From("test").FullOuterJoin(
700 goqu.From("test2").Where(goqu.C("amount").Gt(0)).As("t"),
701 goqu.On(goqu.I("test.fkey").Eq(goqu.I("t.Id"))),
702 ).ToSQL()
703 fmt.Println(sql)
704
705
706
707
708
709 }
710
711 func ExampleSelectDataset_RightOuterJoin() {
712 sql, _, _ := goqu.From("test").RightOuterJoin(
713 goqu.T("test2"),
714 goqu.On(goqu.Ex{
715 "test.fkey": goqu.I("test2.Id"),
716 }),
717 ).ToSQL()
718 fmt.Println(sql)
719
720 sql, _, _ = goqu.From("test").RightOuterJoin(
721 goqu.T("test2"),
722 goqu.Using("common_column"),
723 ).ToSQL()
724 fmt.Println(sql)
725
726 sql, _, _ = goqu.From("test").RightOuterJoin(
727 goqu.From("test2").Where(goqu.C("amount").Gt(0)),
728 goqu.On(goqu.I("test.fkey").Eq(goqu.I("test2.Id"))),
729 ).ToSQL()
730 fmt.Println(sql)
731
732 sql, _, _ = goqu.From("test").RightOuterJoin(
733 goqu.From("test2").Where(goqu.C("amount").Gt(0)).As("t"),
734 goqu.On(goqu.I("test.fkey").Eq(goqu.I("t.Id"))),
735 ).ToSQL()
736 fmt.Println(sql)
737
738
739
740
741
742 }
743
744 func ExampleSelectDataset_LeftOuterJoin() {
745 sql, _, _ := goqu.From("test").LeftOuterJoin(
746 goqu.T("test2"),
747 goqu.On(goqu.Ex{
748 "test.fkey": goqu.I("test2.Id"),
749 }),
750 ).ToSQL()
751 fmt.Println(sql)
752
753 sql, _, _ = goqu.From("test").LeftOuterJoin(
754 goqu.T("test2"),
755 goqu.Using("common_column"),
756 ).ToSQL()
757 fmt.Println(sql)
758
759 sql, _, _ = goqu.From("test").LeftOuterJoin(
760 goqu.From("test2").Where(goqu.C("amount").Gt(0)),
761 goqu.On(goqu.I("test.fkey").Eq(goqu.I("test2.Id"))),
762 ).ToSQL()
763 fmt.Println(sql)
764
765 sql, _, _ = goqu.From("test").LeftOuterJoin(
766 goqu.From("test2").Where(goqu.C("amount").Gt(0)).As("t"),
767 goqu.On(goqu.I("test.fkey").Eq(goqu.I("t.Id"))),
768 ).ToSQL()
769 fmt.Println(sql)
770
771
772
773
774
775 }
776
777 func ExampleSelectDataset_FullJoin() {
778 sql, _, _ := goqu.From("test").FullJoin(
779 goqu.T("test2"),
780 goqu.On(goqu.Ex{
781 "test.fkey": goqu.I("test2.Id"),
782 }),
783 ).ToSQL()
784 fmt.Println(sql)
785
786 sql, _, _ = goqu.From("test").FullJoin(
787 goqu.T("test2"),
788 goqu.Using("common_column"),
789 ).ToSQL()
790 fmt.Println(sql)
791
792 sql, _, _ = goqu.From("test").FullJoin(
793 goqu.From("test2").Where(goqu.C("amount").Gt(0)),
794 goqu.On(goqu.I("test.fkey").Eq(goqu.I("test2.Id"))),
795 ).ToSQL()
796 fmt.Println(sql)
797
798 sql, _, _ = goqu.From("test").FullJoin(
799 goqu.From("test2").Where(goqu.C("amount").Gt(0)).As("t"),
800 goqu.On(goqu.I("test.fkey").Eq(goqu.I("t.Id"))),
801 ).ToSQL()
802 fmt.Println(sql)
803
804
805
806
807
808 }
809
810 func ExampleSelectDataset_RightJoin() {
811 sql, _, _ := goqu.From("test").RightJoin(
812 goqu.T("test2"),
813 goqu.On(goqu.Ex{
814 "test.fkey": goqu.I("test2.Id"),
815 }),
816 ).ToSQL()
817 fmt.Println(sql)
818
819 sql, _, _ = goqu.From("test").RightJoin(
820 goqu.T("test2"),
821 goqu.Using("common_column"),
822 ).ToSQL()
823 fmt.Println(sql)
824
825 sql, _, _ = goqu.From("test").RightJoin(
826 goqu.From("test2").Where(goqu.C("amount").Gt(0)),
827 goqu.On(goqu.I("test.fkey").Eq(goqu.I("test2.Id"))),
828 ).ToSQL()
829 fmt.Println(sql)
830
831 sql, _, _ = goqu.From("test").RightJoin(
832 goqu.From("test2").Where(goqu.C("amount").Gt(0)).As("t"),
833 goqu.On(goqu.I("test.fkey").Eq(goqu.I("t.Id"))),
834 ).ToSQL()
835 fmt.Println(sql)
836
837
838
839
840
841 }
842
843 func ExampleSelectDataset_LeftJoin() {
844 sql, _, _ := goqu.From("test").LeftJoin(
845 goqu.T("test2"),
846 goqu.On(goqu.Ex{
847 "test.fkey": goqu.I("test2.Id"),
848 }),
849 ).ToSQL()
850 fmt.Println(sql)
851
852 sql, _, _ = goqu.From("test").LeftJoin(
853 goqu.T("test2"),
854 goqu.Using("common_column"),
855 ).ToSQL()
856 fmt.Println(sql)
857
858 sql, _, _ = goqu.From("test").LeftJoin(
859 goqu.From("test2").Where(goqu.C("amount").Gt(0)),
860 goqu.On(goqu.I("test.fkey").Eq(goqu.I("test2.Id"))),
861 ).ToSQL()
862 fmt.Println(sql)
863
864 sql, _, _ = goqu.From("test").LeftJoin(
865 goqu.From("test2").Where(goqu.C("amount").Gt(0)).As("t"),
866 goqu.On(goqu.I("test.fkey").Eq(goqu.I("t.Id"))),
867 ).ToSQL()
868 fmt.Println(sql)
869
870
871
872
873
874 }
875
876 func ExampleSelectDataset_NaturalJoin() {
877 sql, _, _ := goqu.From("test").NaturalJoin(goqu.T("test2")).ToSQL()
878 fmt.Println(sql)
879
880 sql, _, _ = goqu.From("test").NaturalJoin(
881 goqu.From("test2").Where(goqu.C("amount").Gt(0)),
882 ).ToSQL()
883 fmt.Println(sql)
884
885 sql, _, _ = goqu.From("test").NaturalJoin(
886 goqu.From("test2").Where(goqu.C("amount").Gt(0)).As("t"),
887 ).ToSQL()
888 fmt.Println(sql)
889
890
891
892
893 }
894
895 func ExampleSelectDataset_NaturalLeftJoin() {
896 sql, _, _ := goqu.From("test").NaturalLeftJoin(goqu.T("test2")).ToSQL()
897 fmt.Println(sql)
898
899 sql, _, _ = goqu.From("test").NaturalLeftJoin(
900 goqu.From("test2").Where(goqu.C("amount").Gt(0)),
901 ).ToSQL()
902 fmt.Println(sql)
903
904 sql, _, _ = goqu.From("test").NaturalLeftJoin(
905 goqu.From("test2").Where(goqu.C("amount").Gt(0)).As("t"),
906 ).ToSQL()
907 fmt.Println(sql)
908
909
910
911
912 }
913
914 func ExampleSelectDataset_NaturalRightJoin() {
915 sql, _, _ := goqu.From("test").NaturalRightJoin(goqu.T("test2")).ToSQL()
916 fmt.Println(sql)
917
918 sql, _, _ = goqu.From("test").NaturalRightJoin(
919 goqu.From("test2").Where(goqu.C("amount").Gt(0)),
920 ).ToSQL()
921 fmt.Println(sql)
922
923 sql, _, _ = goqu.From("test").NaturalRightJoin(
924 goqu.From("test2").Where(goqu.C("amount").Gt(0)).As("t"),
925 ).ToSQL()
926 fmt.Println(sql)
927
928
929
930
931 }
932
933 func ExampleSelectDataset_NaturalFullJoin() {
934 sql, _, _ := goqu.From("test").NaturalFullJoin(goqu.T("test2")).ToSQL()
935 fmt.Println(sql)
936
937 sql, _, _ = goqu.From("test").NaturalFullJoin(
938 goqu.From("test2").Where(goqu.C("amount").Gt(0)),
939 ).ToSQL()
940 fmt.Println(sql)
941
942 sql, _, _ = goqu.From("test").NaturalFullJoin(
943 goqu.From("test2").Where(goqu.C("amount").Gt(0)).As("t"),
944 ).ToSQL()
945 fmt.Println(sql)
946
947
948
949
950 }
951
952 func ExampleSelectDataset_CrossJoin() {
953 sql, _, _ := goqu.From("test").CrossJoin(goqu.T("test2")).ToSQL()
954 fmt.Println(sql)
955
956 sql, _, _ = goqu.From("test").CrossJoin(
957 goqu.From("test2").Where(goqu.C("amount").Gt(0)),
958 ).ToSQL()
959 fmt.Println(sql)
960
961 sql, _, _ = goqu.From("test").CrossJoin(
962 goqu.From("test2").Where(goqu.C("amount").Gt(0)).As("t"),
963 ).ToSQL()
964 fmt.Println(sql)
965
966
967
968
969 }
970
971 func ExampleSelectDataset_FromSelf() {
972 sql, _, _ := goqu.From("test").FromSelf().ToSQL()
973 fmt.Println(sql)
974 sql, _, _ = goqu.From("test").As("my_test_table").FromSelf().ToSQL()
975 fmt.Println(sql)
976
977
978
979 }
980
981 func ExampleSelectDataset_From() {
982 ds := goqu.From("test")
983 sql, _, _ := ds.From("test2").ToSQL()
984 fmt.Println(sql)
985
986
987 }
988
989 func ExampleSelectDataset_From_withDataset() {
990 ds := goqu.From("test")
991 fromDs := ds.Where(goqu.C("age").Gt(10))
992 sql, _, _ := ds.From(fromDs).ToSQL()
993 fmt.Println(sql)
994
995
996 }
997
998 func ExampleSelectDataset_From_withAliasedDataset() {
999 ds := goqu.From("test")
1000 fromDs := ds.Where(goqu.C("age").Gt(10))
1001 sql, _, _ := ds.From(fromDs.As("test2")).ToSQL()
1002 fmt.Println(sql)
1003
1004
1005 }
1006
1007 func ExampleSelectDataset_Select() {
1008 sql, _, _ := goqu.From("test").Select("a", "b", "c").ToSQL()
1009 fmt.Println(sql)
1010
1011
1012 }
1013
1014 func ExampleSelectDataset_Select_withDataset() {
1015 ds := goqu.From("test")
1016 fromDs := ds.Select("age").Where(goqu.C("age").Gt(10))
1017 sql, _, _ := ds.From().Select(fromDs).ToSQL()
1018 fmt.Println(sql)
1019
1020
1021 }
1022
1023 func ExampleSelectDataset_Select_withAliasedDataset() {
1024 ds := goqu.From("test")
1025 fromDs := ds.Select("age").Where(goqu.C("age").Gt(10))
1026 sql, _, _ := ds.From().Select(fromDs.As("ages")).ToSQL()
1027 fmt.Println(sql)
1028
1029
1030 }
1031
1032 func ExampleSelectDataset_Select_withLiteral() {
1033 sql, _, _ := goqu.From("test").Select(goqu.L("a + b").As("sum")).ToSQL()
1034 fmt.Println(sql)
1035
1036
1037 }
1038
1039 func ExampleSelectDataset_Select_withSQLFunctionExpression() {
1040 sql, _, _ := goqu.From("test").Select(
1041 goqu.COUNT("*").As("age_count"),
1042 goqu.MAX("age").As("max_age"),
1043 goqu.AVG("age").As("avg_age"),
1044 ).ToSQL()
1045 fmt.Println(sql)
1046
1047
1048 }
1049
1050 func ExampleSelectDataset_Select_withStruct() {
1051 ds := goqu.From("test")
1052
1053 type myStruct struct {
1054 Name string
1055 Address string `db:"address"`
1056 EmailAddress string `db:"email_address"`
1057 }
1058
1059
1060 sql, _, _ := ds.Select(&myStruct{}).ToSQL()
1061 fmt.Println(sql)
1062
1063
1064 sql, _, _ = ds.Select(myStruct{}).ToSQL()
1065 fmt.Println(sql)
1066
1067 type myStruct2 struct {
1068 myStruct
1069 Zipcode string `db:"zipcode"`
1070 }
1071
1072
1073 sql, _, _ = ds.Select(&myStruct2{}).ToSQL()
1074 fmt.Println(sql)
1075
1076
1077 sql, _, _ = ds.Select(myStruct2{}).ToSQL()
1078 fmt.Println(sql)
1079
1080 var myStructs []myStruct
1081
1082
1083 sql, _, _ = ds.Select(myStructs).ToSQL()
1084 fmt.Println(sql)
1085
1086
1087
1088
1089
1090
1091
1092 }
1093
1094 func ExampleSelectDataset_Distinct() {
1095 sql, _, _ := goqu.From("test").Select("a", "b").Distinct().ToSQL()
1096 fmt.Println(sql)
1097
1098
1099 }
1100
1101 func ExampleSelectDataset_Distinct_on() {
1102 sql, _, _ := goqu.From("test").Distinct("a").ToSQL()
1103 fmt.Println(sql)
1104
1105
1106 }
1107
1108 func ExampleSelectDataset_Distinct_onWithLiteral() {
1109 sql, _, _ := goqu.From("test").Distinct(goqu.L("COALESCE(?, ?)", goqu.C("a"), "empty")).ToSQL()
1110 fmt.Println(sql)
1111
1112
1113 }
1114
1115 func ExampleSelectDataset_Distinct_onCoalesce() {
1116 sql, _, _ := goqu.From("test").Distinct(goqu.COALESCE(goqu.C("a"), "empty")).ToSQL()
1117 fmt.Println(sql)
1118
1119
1120 }
1121
1122 func ExampleSelectDataset_SelectAppend() {
1123 ds := goqu.From("test").Select("a", "b")
1124 sql, _, _ := ds.SelectAppend("c").ToSQL()
1125 fmt.Println(sql)
1126 ds = goqu.From("test").Select("a", "b").Distinct()
1127 sql, _, _ = ds.SelectAppend("c").ToSQL()
1128 fmt.Println(sql)
1129
1130
1131
1132 }
1133
1134 func ExampleSelectDataset_ClearSelect() {
1135 ds := goqu.From("test").Select("a", "b")
1136 sql, _, _ := ds.ClearSelect().ToSQL()
1137 fmt.Println(sql)
1138 ds = goqu.From("test").Select("a", "b").Distinct()
1139 sql, _, _ = ds.ClearSelect().ToSQL()
1140 fmt.Println(sql)
1141
1142
1143
1144 }
1145
1146 func ExampleSelectDataset_ToSQL() {
1147 sql, args, _ := goqu.From("items").Where(goqu.Ex{"a": 1}).ToSQL()
1148 fmt.Println(sql, args)
1149
1150
1151 }
1152
1153 func ExampleSelectDataset_ToSQL_prepared() {
1154 sql, args, _ := goqu.From("items").Where(goqu.Ex{"a": 1}).Prepared(true).ToSQL()
1155 fmt.Println(sql, args)
1156
1157
1158 }
1159
1160 func ExampleSelectDataset_Update() {
1161 type item struct {
1162 Address string `db:"address"`
1163 Name string `db:"name"`
1164 }
1165 sql, args, _ := goqu.From("items").Update().Set(
1166 item{Name: "Test", Address: "111 Test Addr"},
1167 ).ToSQL()
1168 fmt.Println(sql, args)
1169
1170 sql, args, _ = goqu.From("items").Update().Set(
1171 goqu.Record{"name": "Test", "address": "111 Test Addr"},
1172 ).ToSQL()
1173 fmt.Println(sql, args)
1174
1175 sql, args, _ = goqu.From("items").Update().Set(
1176 map[string]interface{}{"name": "Test", "address": "111 Test Addr"},
1177 ).ToSQL()
1178 fmt.Println(sql, args)
1179
1180
1181
1182
1183
1184 }
1185
1186 func ExampleSelectDataset_Insert() {
1187 type item struct {
1188 ID uint32 `db:"id" goqu:"skipinsert"`
1189 Address string `db:"address"`
1190 Name string `db:"name"`
1191 }
1192 sql, args, _ := goqu.From("items").Insert().Rows(
1193 item{Name: "Test1", Address: "111 Test Addr"},
1194 item{Name: "Test2", Address: "112 Test Addr"},
1195 ).ToSQL()
1196 fmt.Println(sql, args)
1197
1198 sql, args, _ = goqu.From("items").Insert().Rows(
1199 goqu.Record{"name": "Test1", "address": "111 Test Addr"},
1200 goqu.Record{"name": "Test2", "address": "112 Test Addr"},
1201 ).ToSQL()
1202 fmt.Println(sql, args)
1203
1204 sql, args, _ = goqu.From("items").Insert().Rows(
1205 []item{
1206 {Name: "Test1", Address: "111 Test Addr"},
1207 {Name: "Test2", Address: "112 Test Addr"},
1208 }).ToSQL()
1209 fmt.Println(sql, args)
1210
1211 sql, args, _ = goqu.From("items").Insert().Rows(
1212 []goqu.Record{
1213 {"name": "Test1", "address": "111 Test Addr"},
1214 {"name": "Test2", "address": "112 Test Addr"},
1215 }).ToSQL()
1216 fmt.Println(sql, args)
1217
1218
1219
1220
1221
1222 }
1223
1224 func ExampleSelectDataset_Delete() {
1225 sql, args, _ := goqu.From("items").Delete().ToSQL()
1226 fmt.Println(sql, args)
1227
1228 sql, args, _ = goqu.From("items").
1229 Where(goqu.Ex{"id": goqu.Op{"gt": 10}}).
1230 Delete().
1231 ToSQL()
1232 fmt.Println(sql, args)
1233
1234
1235
1236
1237 }
1238
1239 func ExampleSelectDataset_Truncate() {
1240 sql, args, _ := goqu.From("items").Truncate().ToSQL()
1241 fmt.Println(sql, args)
1242
1243
1244 }
1245
1246 func ExampleSelectDataset_Prepared() {
1247 sql, args, _ := goqu.From("items").Prepared(true).Where(goqu.Ex{
1248 "col1": "a",
1249 "col2": 1,
1250 "col3": true,
1251 "col4": false,
1252 "col5": []string{"a", "b", "c"},
1253 }).ToSQL()
1254 fmt.Println(sql, args)
1255
1256
1257
1258 }
1259
1260 func ExampleSelectDataset_ScanStructs() {
1261 type User struct {
1262 FirstName string `db:"first_name"`
1263 LastName string `db:"last_name"`
1264 }
1265 db := getDB()
1266 var users []User
1267 if err := db.From("goqu_user").ScanStructs(&users); err != nil {
1268 fmt.Println(err.Error())
1269 return
1270 }
1271 fmt.Printf("\n%+v", users)
1272
1273 users = users[0:0]
1274 if err := db.From("goqu_user").Select("first_name").ScanStructs(&users); err != nil {
1275 fmt.Println(err.Error())
1276 return
1277 }
1278 fmt.Printf("\n%+v", users)
1279
1280
1281
1282
1283 }
1284
1285 func ExampleSelectDataset_ScanStructs_prepared() {
1286 type User struct {
1287 FirstName string `db:"first_name"`
1288 LastName string `db:"last_name"`
1289 }
1290 db := getDB()
1291
1292 ds := db.From("goqu_user").
1293 Prepared(true).
1294 Where(goqu.Ex{
1295 "last_name": "Yukon",
1296 })
1297
1298 var users []User
1299 if err := ds.ScanStructs(&users); err != nil {
1300 fmt.Println(err.Error())
1301 return
1302 }
1303 fmt.Printf("\n%+v", users)
1304
1305
1306
1307 }
1308
1309
1310
1311 func ExampleSelectDataset_ScanStructs_withJoinAutoSelect() {
1312 type Role struct {
1313 UserID uint64 `db:"user_id"`
1314 Name string `db:"name"`
1315 }
1316 type User struct {
1317 ID uint64 `db:"id"`
1318 FirstName string `db:"first_name"`
1319 LastName string `db:"last_name"`
1320 }
1321 type UserAndRole struct {
1322 User User `db:"goqu_user"`
1323 Role Role `db:"user_role"`
1324 }
1325 db := getDB()
1326
1327 ds := db.
1328 From("goqu_user").
1329 Join(goqu.T("user_role"), goqu.On(goqu.I("goqu_user.id").Eq(goqu.I("user_role.user_id"))))
1330 var users []UserAndRole
1331
1332 if err := ds.ScanStructs(&users); err != nil {
1333 fmt.Println(err.Error())
1334 return
1335 }
1336 for _, u := range users {
1337 fmt.Printf("\n%+v", u)
1338 }
1339
1340
1341
1342
1343
1344 }
1345
1346
1347
1348 func ExampleSelectDataset_ScanStructs_withJoinManualSelect() {
1349 type Role struct {
1350 UserID uint64 `db:"user_id"`
1351 Name string `db:"name"`
1352 }
1353 type User struct {
1354 ID uint64 `db:"id"`
1355 FirstName string `db:"first_name"`
1356 LastName string `db:"last_name"`
1357 Role Role `db:"user_role"`
1358 }
1359 db := getDB()
1360
1361 ds := db.
1362 Select(
1363 "goqu_user.id",
1364 "goqu_user.first_name",
1365 "goqu_user.last_name",
1366
1367 goqu.I("user_role.user_id").As(goqu.C("user_role.user_id")),
1368 goqu.I("user_role.name").As(goqu.C("user_role.name")),
1369 ).
1370 From("goqu_user").
1371 Join(goqu.T("user_role"), goqu.On(goqu.I("goqu_user.id").Eq(goqu.I("user_role.user_id"))))
1372 var users []User
1373 if err := ds.ScanStructs(&users); err != nil {
1374 fmt.Println(err.Error())
1375 return
1376 }
1377 for _, u := range users {
1378 fmt.Printf("\n%+v", u)
1379 }
1380
1381
1382
1383
1384
1385
1386 }
1387
1388 func ExampleSelectDataset_ScanStruct() {
1389 type User struct {
1390 FirstName string `db:"first_name"`
1391 LastName string `db:"last_name"`
1392 }
1393 db := getDB()
1394 findUserByName := func(name string) {
1395 var user User
1396 ds := db.From("goqu_user").Where(goqu.C("first_name").Eq(name))
1397 found, err := ds.ScanStruct(&user)
1398 switch {
1399 case err != nil:
1400 fmt.Println(err.Error())
1401 case !found:
1402 fmt.Printf("No user found for first_name %s\n", name)
1403 default:
1404 fmt.Printf("Found user: %+v\n", user)
1405 }
1406 }
1407
1408 findUserByName("Bob")
1409 findUserByName("Zeb")
1410
1411
1412
1413
1414 }
1415
1416
1417
1418 func ExampleSelectDataset_ScanStruct_withJoinAutoSelect() {
1419 type Role struct {
1420 UserID uint64 `db:"user_id"`
1421 Name string `db:"name"`
1422 }
1423 type User struct {
1424 ID uint64 `db:"id"`
1425 FirstName string `db:"first_name"`
1426 LastName string `db:"last_name"`
1427 }
1428 type UserAndRole struct {
1429 User User `db:"goqu_user"`
1430 Role Role `db:"user_role"`
1431 }
1432 db := getDB()
1433 findUserAndRoleByName := func(name string) {
1434 var userAndRole UserAndRole
1435 ds := db.
1436 From("goqu_user").
1437 Join(
1438 goqu.T("user_role"),
1439 goqu.On(goqu.I("goqu_user.id").Eq(goqu.I("user_role.user_id"))),
1440 ).
1441 Where(goqu.C("first_name").Eq(name))
1442 found, err := ds.ScanStruct(&userAndRole)
1443 switch {
1444 case err != nil:
1445 fmt.Println(err.Error())
1446 case !found:
1447 fmt.Printf("No user found for first_name %s\n", name)
1448 default:
1449 fmt.Printf("Found user and role: %+v\n", userAndRole)
1450 }
1451 }
1452
1453 findUserAndRoleByName("Bob")
1454 findUserAndRoleByName("Zeb")
1455
1456
1457
1458 }
1459
1460
1461
1462 func ExampleSelectDataset_ScanStruct_withJoinManualSelect() {
1463 type Role struct {
1464 UserID uint64 `db:"user_id"`
1465 Name string `db:"name"`
1466 }
1467 type User struct {
1468 ID uint64 `db:"id"`
1469 FirstName string `db:"first_name"`
1470 LastName string `db:"last_name"`
1471 Role Role `db:"user_role"`
1472 }
1473 db := getDB()
1474 findUserByName := func(name string) {
1475 var userAndRole User
1476 ds := db.
1477 Select(
1478 "goqu_user.id",
1479 "goqu_user.first_name",
1480 "goqu_user.last_name",
1481
1482 goqu.I("user_role.user_id").As(goqu.C("user_role.user_id")),
1483 goqu.I("user_role.name").As(goqu.C("user_role.name")),
1484 ).
1485 From("goqu_user").
1486 Join(
1487 goqu.T("user_role"),
1488 goqu.On(goqu.I("goqu_user.id").Eq(goqu.I("user_role.user_id"))),
1489 ).
1490 Where(goqu.C("first_name").Eq(name))
1491 found, err := ds.ScanStruct(&userAndRole)
1492 switch {
1493 case err != nil:
1494 fmt.Println(err.Error())
1495 case !found:
1496 fmt.Printf("No user found for first_name %s\n", name)
1497 default:
1498 fmt.Printf("Found user and role: %+v\n", userAndRole)
1499 }
1500 }
1501
1502 findUserByName("Bob")
1503 findUserByName("Zeb")
1504
1505
1506
1507
1508 }
1509
1510 func ExampleSelectDataset_ScanVals() {
1511 var ids []int64
1512 if err := getDB().From("goqu_user").Select("id").ScanVals(&ids); err != nil {
1513 fmt.Println(err.Error())
1514 return
1515 }
1516 fmt.Printf("UserIds = %+v", ids)
1517
1518
1519
1520 }
1521
1522 func ExampleSelectDataset_ScanVal() {
1523 db := getDB()
1524 findUserIDByName := func(name string) {
1525 var id int64
1526 ds := db.From("goqu_user").
1527 Select("id").
1528 Where(goqu.C("first_name").Eq(name))
1529
1530 found, err := ds.ScanVal(&id)
1531 switch {
1532 case err != nil:
1533 fmt.Println(err.Error())
1534 case !found:
1535 fmt.Printf("No id found for user %s", name)
1536 default:
1537 fmt.Printf("\nFound userId: %+v\n", id)
1538 }
1539 }
1540
1541 findUserIDByName("Bob")
1542 findUserIDByName("Zeb")
1543
1544
1545
1546 }
1547
1548 func ExampleSelectDataset_Count() {
1549 count, err := getDB().From("goqu_user").Count()
1550 if err != nil {
1551 fmt.Println(err.Error())
1552 return
1553 }
1554 fmt.Printf("Count is %d", count)
1555
1556
1557
1558 }
1559
1560 func ExampleSelectDataset_Pluck() {
1561 var lastNames []string
1562 if err := getDB().From("goqu_user").Pluck(&lastNames, "last_name"); err != nil {
1563 fmt.Println(err.Error())
1564 return
1565 }
1566 fmt.Printf("LastNames = %+v", lastNames)
1567
1568
1569
1570 }
1571
1572 func ExampleSelectDataset_Executor_scannerScanStruct() {
1573 type User struct {
1574 FirstName string `db:"first_name"`
1575 LastName string `db:"last_name"`
1576 }
1577 db := getDB()
1578
1579 scanner, err := db.
1580 From("goqu_user").
1581 Select("first_name", "last_name").
1582 Where(goqu.Ex{
1583 "last_name": "Yukon",
1584 }).
1585 Executor().
1586 Scanner()
1587 if err != nil {
1588 fmt.Println(err.Error())
1589 return
1590 }
1591
1592 defer scanner.Close()
1593
1594 for scanner.Next() {
1595 u := User{}
1596
1597 err = scanner.ScanStruct(&u)
1598 if err != nil {
1599 fmt.Println(err.Error())
1600 return
1601 }
1602
1603 fmt.Printf("\n%+v", u)
1604 }
1605
1606 if scanner.Err() != nil {
1607 fmt.Println(scanner.Err().Error())
1608 }
1609
1610
1611
1612
1613
1614 }
1615
1616 func ExampleSelectDataset_Executor_scannerScanVal() {
1617 db := getDB()
1618
1619 scanner, err := db.
1620 From("goqu_user").
1621 Select("first_name").
1622 Where(goqu.Ex{
1623 "last_name": "Yukon",
1624 }).
1625 Executor().
1626 Scanner()
1627 if err != nil {
1628 fmt.Println(err.Error())
1629 return
1630 }
1631
1632 defer scanner.Close()
1633
1634 for scanner.Next() {
1635 name := ""
1636
1637 err = scanner.ScanVal(&name)
1638 if err != nil {
1639 fmt.Println(err.Error())
1640 return
1641 }
1642
1643 fmt.Println(name)
1644 }
1645
1646 if scanner.Err() != nil {
1647 fmt.Println(scanner.Err().Error())
1648 }
1649
1650
1651
1652
1653
1654 }
1655
1656 func ExampleForUpdate() {
1657 sql, args, _ := goqu.From("test").ForUpdate(exp.Wait).ToSQL()
1658 fmt.Println(sql, args)
1659
1660
1661
1662 }
1663
1664 func ExampleForUpdate_of() {
1665 sql, args, _ := goqu.From("test").ForUpdate(exp.Wait, goqu.T("test")).ToSQL()
1666 fmt.Println(sql, args)
1667
1668
1669
1670 }
1671
1672 func ExampleForUpdate_ofMultiple() {
1673 sql, args, _ := goqu.From("table1").Join(
1674 goqu.T("table2"),
1675 goqu.On(goqu.I("table2.id").Eq(goqu.I("table1.id"))),
1676 ).ForUpdate(
1677 exp.Wait,
1678 goqu.T("table1"),
1679 goqu.T("table2"),
1680 ).ToSQL()
1681 fmt.Println(sql, args)
1682
1683
1684
1685 }
1686
View as plain text