graphvent/user.go

55 lines
1.0 KiB
Go

2023-07-20 22:08:28 -06:00
package graphvent
import (
"encoding/json"
)
2023-07-26 00:18:11 -06:00
type GroupExt struct {
Members map[NodeID]string
}
type GroupExtJSON struct {
Members map[string]string `json:"members"`
2023-07-25 09:51:55 -06:00
}
2023-07-26 00:18:11 -06:00
func (ext *GroupExt) Type() ExtType {
return GroupExtType
2023-07-25 09:51:55 -06:00
}
2023-07-26 00:18:11 -06:00
func (ext *GroupExt) Serialize() ([]byte, error) {
2023-08-01 20:55:15 -06:00
return json.Marshal(&GroupExtJSON{
Members: IDMap(ext.Members),
2023-08-01 20:55:15 -06:00
})
2023-07-25 09:51:55 -06:00
}
func (ext *GroupExt) Field(name string) interface{} {
return ResolveFields(ext, name, map[string]func(*GroupExt)interface{}{
"members": func(ext *GroupExt) interface{} {
return ext.Members
},
})
}
func NewGroupExt(members map[NodeID]string) *GroupExt {
2023-07-26 11:56:10 -06:00
if members == nil {
members = map[NodeID]string{}
2023-07-26 11:56:10 -06:00
}
2023-07-26 11:56:10 -06:00
return &GroupExt{
Members: members,
}
}
2023-08-01 20:55:15 -06:00
func (ext *GroupExt) Deserialize(ctx *Context, data []byte) error {
var j GroupExtJSON
2023-07-26 00:18:11 -06:00
err := json.Unmarshal(data, &j)
2023-07-25 09:51:55 -06:00
2023-08-01 20:55:15 -06:00
ext.Members, err = LoadIDMap(j.Members)
return err
2023-07-26 00:18:11 -06:00
}
2023-07-25 09:51:55 -06:00
func (ext *GroupExt) Process(ctx *Context, node *Node, msg Message) []Message {
return nil
2023-07-26 00:18:11 -06:00
}