Files
oc-discovery/daemons/node/pubsub/publish.go

57 lines
1.6 KiB
Go
Raw Normal View History

2026-01-30 16:57:36 +01:00
package pubsub
import (
"context"
"encoding/json"
"errors"
"oc-discovery/models"
oclib "cloud.o-forge.io/core/oc-lib"
"cloud.o-forge.io/core/oc-lib/tools"
)
func (ps *PubSubService) SearchPublishEvent(
ctx context.Context, dt *tools.DataType, typ string, user string, search string) error {
switch typ {
case "known": // define Search Strategy
return ps.StreamService.SearchKnownPublishEvent(dt, user, search) //if partners focus only them*/
case "partner": // define Search Strategy
return ps.StreamService.SearchPartnersPublishEvent(dt, user, search) //if partners focus only them*/
case "all": // Gossip PubSub
b, err := json.Marshal(map[string]string{"search": search})
if err != nil {
return err
}
return ps.searchPublishEvent(ctx, dt, user, b)
default:
return errors.New("no type of research found")
}
}
func (ps *PubSubService) searchPublishEvent(
ctx context.Context, dt *tools.DataType, user string, payload []byte) error {
2026-02-24 14:31:37 +01:00
return ps.publishEvent(ctx, dt, tools.PB_SEARCH, user, payload)
2026-01-30 16:57:36 +01:00
}
func (ps *PubSubService) publishEvent(
2026-02-24 14:31:37 +01:00
ctx context.Context, dt *tools.DataType, action tools.PubSubAction, user string, payload []byte,
2026-01-30 16:57:36 +01:00
) error {
from, err := oclib.GenerateNodeID()
if err != nil {
return err
}
priv, err := tools.LoadKeyFromFilePrivate()
2026-01-30 16:57:36 +01:00
if err != nil {
return err
}
2026-02-24 14:31:37 +01:00
msg, _ := json.Marshal(models.NewEvent(action.String(), from, dt, user, payload, priv))
topic, err := ps.PS.Join(action.String())
2026-01-30 16:57:36 +01:00
if err != nil {
return err
}
return topic.Publish(ctx, msg)
}
// TODO REVIEW PUBLISHING + ADD SEARCH ON PUBLIC : YES
// TODO : Search should verify DataType