/
mutations.go
128 lines (97 loc) · 2.46 KB
/
mutations.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
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
package main
import (
"context"
"github.com/go-rel/rel"
)
// MutationsBasicSet docs example.
func MutationsBasicSet(ctx context.Context, repo rel.Repository) error {
var book Book
/// [basic-set]
err := repo.Update(ctx, &book,
rel.Set("title", "REL for Dummies"),
rel.Set("category", "technology"),
)
/// [basic-set]
return err
}
// MutationsBasicDec docs example.
func MutationsBasicDec(ctx context.Context, repo rel.Repository) error {
var book Book
/// [basic-dec]
err := repo.Update(ctx, &book, rel.DecBy("stock", 2))
/// [basic-dec]
return err
}
// MutationsBasicFragment docs example.
func MutationsBasicFragment(ctx context.Context, repo rel.Repository) error {
var book Book
/// [basic-fragment]
err := repo.Update(ctx, &book, rel.SetFragment("title=?", "REL for dummies"))
/// [basic-fragment]
return err
}
// MutationsStructset docs example.
func MutationsStructset(ctx context.Context, repo rel.Repository) error {
var book Book
/// [structset]
structset := rel.NewStructset(&book, false)
err := repo.Insert(ctx, &book, structset)
/// [structset]
return err
}
// MutationsChangeset docs example.
func MutationsChangeset(ctx context.Context, repo rel.Repository) error {
var book Book
/// [changeset]
changeset := rel.NewChangeset(&book)
book.Price = 10
if changeset.FieldChanged("price") {
book.Discount = false
}
err := repo.Update(ctx, &book, changeset)
/// [changeset]
return err
}
// MutationsMap docs example.
func MutationsMap(ctx context.Context, repo rel.Repository) error {
var book Book
/// [map]
data := rel.Map{
"title": "Rel for dummies",
"category": "education",
"author": rel.Map{
"name": "CZ2I28 Delta",
},
}
// Insert using map.
err := repo.Insert(ctx, &book, data)
/// [map]
return err
}
// MutationsReload docs example.
func MutationsReload(ctx context.Context, repo rel.Repository) error {
var book Book
/// [reload]
err := repo.Update(ctx, &book,
rel.Set("title", "REL for Dummies"),
rel.Reload(true),
)
/// [reload]
return err
}
// MutationsCascade docs example.
func MutationsCascade(ctx context.Context, repo rel.Repository) error {
var book Book
/// [cascade]
err := repo.Insert(ctx, &book, rel.Cascade(false))
/// [cascade]
return err
}
// MutationsDeleteCascade docs example.
func MutationsDeleteCascade(ctx context.Context, repo rel.Repository) error {
var book Book
/// [delete-cascade]
err := repo.Delete(ctx, &book, rel.Cascade(true))
/// [delete-cascade]
return err
}