event.go
1.3 KB
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
package domain
import "github.com/gookit/event"
type EventType string
func (et EventType) ToString() string {
return string(et)
}
const (
TableDataEditEvent EventType = "table.data.edit"
TableDataImportEvent EventType = "table.data.import"
TableDeleteEvent EventType = "table.delete"
QuerySetUpdateEvent EventType = "table.query.set.update"
)
type EventTable struct {
Context *Context
Type EventType
Table *Table
QuerySet *QuerySet
}
func NewEventTable(ctx *Context, t EventType) *EventTable {
return &EventTable{
Context: ctx,
Type: t,
}
}
func (et *EventTable) WithContext(t *Context) *EventTable {
et.Context = t
return et
}
func (et *EventTable) WithType(t EventType) *EventTable {
et.Type = t
return et
}
func (et *EventTable) WithTable(t *Table) *EventTable {
et.Table = t
return et
}
func (et *EventTable) WithQuerySet(t *QuerySet) *EventTable {
et.QuerySet = t
return et
}
func (et *EventTable) ResolveEvent(e event.Event) {
et.Context = e.Get("Context").(*Context)
et.Type = e.Get("Type").(EventType)
et.Table = e.Get("Table").(*Table)
et.QuerySet = e.Get("QuerySet").(*QuerySet)
}
func (et *EventTable) FireEvent() event.Event {
e := event.M{}
e["Context"] = et.Context
e["Type"] = et.Type
e["Table"] = et.Table
e["QuerySet"] = et.QuerySet
return event.MustFire(et.Type.ToString(), e)
}