30 lines
573 B
Go
30 lines
573 B
Go
package models
|
|
|
|
import "slices"
|
|
|
|
// topic model
|
|
type Topic struct {
|
|
Publish []string `json:"Publish,omitempty"`
|
|
Subscribe []string `json:"subscribe,omitempty"`
|
|
}
|
|
|
|
func (t *Topic) AddSubscription(subs ...string) {
|
|
for _, sub := range subs {
|
|
if slices.Contains(t.Subscribe, sub) {
|
|
continue
|
|
}
|
|
t.Subscribe = append(t.Subscribe, sub)
|
|
slices.Sort(t.Subscribe)
|
|
}
|
|
}
|
|
|
|
func (t *Topic) AddPublish(pubs ...string) {
|
|
for _, pub := range pubs {
|
|
if slices.Contains(t.Publish, pub) {
|
|
continue
|
|
}
|
|
t.Subscribe = append(t.Publish, pub)
|
|
slices.Sort(t.Publish)
|
|
}
|
|
}
|