forked from go-reform/reform
/
querier_examples_test.go
86 lines (76 loc) · 2.4 KB
/
querier_examples_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
77
78
79
80
81
82
83
84
85
86
package reform_test
import (
"fmt"
"log"
"time"
"github.com/AlekSi/pointer"
"github.com/AlekSi/reform"
. "github.com/AlekSi/reform/internal/test/models"
)
func Example() {
// save record (performs INSERT or UPDATE)
person := &Person{
Name: "Alexey Palazhchenko",
Email: pointer.ToString("alexey.palazhchenko@gmail.com"),
}
if err := DB.Save(person); err != nil {
log.Fatal(err)
}
// ID is filled by Save
person2, err := DB.FindByPrimaryKeyFrom(PersonTable, person.ID)
if err != nil {
log.Fatal(err)
}
fmt.Println(person2.(*Person).Name)
// delete record
if err = DB.Delete(person); err != nil {
log.Fatal(err)
}
// find records by IDs
persons, err := DB.FindAllFrom(PersonTable, "id", 1, 2)
if err != nil {
log.Fatal(err)
}
for _, p := range persons {
fmt.Println(p)
}
// Output:
// Alexey Palazhchenko
// ID: 1 (int32), Name: `Denis Mills` (string), Email: <nil> (*string), CreatedAt: 2009-11-10 23:00:00 +0000 UTC (time.Time), UpdatedAt: <nil> (*time.Time)
// ID: 2 (int32), Name: `Garrick Muller` (string), Email: `muller_garrick@example.com` (*string), CreatedAt: 2009-12-12 12:34:56 +0000 UTC (time.Time), UpdatedAt: <nil> (*time.Time)
}
func ExampleQuerier_SelectRows() {
tail := fmt.Sprintf("WHERE created_at < %s ORDER BY id", DB.Placeholder(1))
y2010 := time.Date(2010, 1, 1, 0, 0, 0, 0, time.UTC)
rows, err := DB.SelectRows(PersonTable, tail, y2010)
if err != nil {
log.Fatal(err)
}
defer rows.Close()
for {
var person Person
err = DB.NextRow(&person, rows)
if err != nil {
break
}
fmt.Println(person)
}
if err != reform.ErrNoRows {
log.Fatal(err)
}
// Output:
// ID: 1 (int32), Name: `Denis Mills` (string), Email: <nil> (*string), CreatedAt: 2009-11-10 23:00:00 +0000 UTC (time.Time), UpdatedAt: <nil> (*time.Time)
// ID: 2 (int32), Name: `Garrick Muller` (string), Email: `muller_garrick@example.com` (*string), CreatedAt: 2009-12-12 12:34:56 +0000 UTC (time.Time), UpdatedAt: <nil> (*time.Time)
}
func ExampleQuerier_SelectOneTo() {
var person Person
tail := fmt.Sprintf("WHERE created_at < %s ORDER BY id", DB.Placeholder(1))
y2010 := time.Date(2010, 1, 1, 0, 0, 0, 0, time.UTC)
err := DB.SelectOneTo(&person, tail, y2010)
if err != nil {
log.Fatal(err)
}
fmt.Println(person)
// Output:
// ID: 1 (int32), Name: `Denis Mills` (string), Email: <nil> (*string), CreatedAt: 2009-11-10 23:00:00 +0000 UTC (time.Time), UpdatedAt: <nil> (*time.Time)
}