/
propertyTrigger.go
49 lines (40 loc) · 1.13 KB
/
propertyTrigger.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
package triggers
import (
"encoding/json"
"fmt"
"github.com/galenliu/gateway/api/models/container"
"github.com/galenliu/gateway/pkg/rules_engine/property"
)
type PropertyTriggerDescription struct {
TriggerDescription
Property property.Description `json:"property"`
}
type PropertyTrigger struct {
*Trigger
property *property.Property
}
func NewPropertyTrigger(des PropertyTriggerDescription, container container.Container) *PropertyTrigger {
p := &PropertyTrigger{
Trigger: NewTrigger(des.TriggerDescription),
property: property.NewProperty(des.Property, container),
}
return p
}
func (p *PropertyTrigger) Start() {
p.property.Start()
}
func (p *PropertyTrigger) Stop() {
p.property.Stop()
}
func (p *PropertyTrigger) OnValueChanged(value any) {
fmt.Println("on value changed function not implemented")
}
func (p *PropertyTrigger) ToDescription() PropertyTriggerDescription {
desc := PropertyTriggerDescription{}
desc.TriggerDescription = p.Trigger.ToDescription()
desc.Property = p.property.ToDescription()
return desc
}
func (p *PropertyTrigger) MarshalJSON() ([]byte, error) {
return json.Marshal(p.ToDescription())
}