-
Notifications
You must be signed in to change notification settings - Fork 6
/
6-onetomany.go
88 lines (72 loc) · 2.04 KB
/
6-onetomany.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
package orm
import (
"context"
"github.com/goradd/goradd/pkg/orm/db"
"github.com/goradd/goradd/pkg/page"
. "github.com/goradd/goradd/pkg/page/control"
"github.com/goradd/goradd/pkg/sys"
"github.com/goradd/goradd/web/examples/gen/goradd/model"
"github.com/goradd/goradd/web/examples/tutorial"
"path/filepath"
)
type OneManyPanel struct {
Panel
}
func NewOneManyPanel(ctx context.Context, parent page.ControlI) page.ControlI {
p := &OneManyPanel{}
p.Self = p
p.Init(ctx, parent, "")
return p
}
func (p *OneManyPanel) Init(ctx context.Context, parent page.ControlI, id string) {
p.Panel.Init(parent, id)
}
func init() {
page.RegisterControl(&OneManyPanel{})
dir := sys.SourceDirectory()
tutorial.RegisterTutorialPage("orm", 6, "onetomany", "One-to-Many References", NewOneManyPanel,
[]string {
sys.SourcePath(),
filepath.Join(dir, "6-onetomany.tpl.got"),
})
}
func (p *OneManyPanel) addRecord(ctx context.Context) string {
address := model.NewAddress()
address.SetStreet("My Street")
address.SetCity("Bucharest")
person := model.NewPerson()
person.SetFirstName("Richard")
person.SetLastName("Wurmbrand")
db.ExecuteTransaction(ctx, model.Database(), func() {
person.Save(ctx)
id := person.ID()
address.SetPersonID(id)
address.Save(ctx)
})
return address.ID()
}
func (p *OneManyPanel) addRecordSimpler(ctx context.Context) string {
address := model.NewAddress()
address.SetStreet("1 Center St")
address.SetCity("Mendenhall")
person := model.NewPerson()
person.SetFirstName("John")
person.SetLastName("Perkins")
address.SetPerson(person)
address.Save(ctx)
return address.ID()
}
func (p *OneManyPanel) addMany(ctx context.Context) string {
person := model.NewPerson()
person.SetFirstName("Martin")
person.SetLastName("Luther")
address1 := model.NewAddress()
address1.SetStreet("My Street")
address1.SetCity("Eisleben")
address2 := model.NewAddress()
address2.SetStreet("All Saints Church")
address2.SetCity("Wittenburg")
person.SetAddresses([]*model.Address{address1, address2})
person.Save(ctx)
return person.ID()
}