Files
oc-peer/infrastructure/nats.go

43 lines
1.1 KiB
Go
Raw Normal View History

2026-01-28 16:05:47 +01:00
package infrastructure
import (
"encoding/json"
"fmt"
oclib "cloud.o-forge.io/core/oc-lib"
2026-02-05 15:48:41 +01:00
"cloud.o-forge.io/core/oc-lib/models"
2026-01-28 16:05:47 +01:00
"cloud.o-forge.io/core/oc-lib/models/peer"
"cloud.o-forge.io/core/oc-lib/tools"
)
func ListenNATS() {
2026-02-05 15:48:41 +01:00
fmt.Println("ListenNATS")
2026-01-28 16:05:47 +01:00
tools.NewNATSCaller().ListenNats(map[tools.NATSMethod]func(tools.NATSResponse){
tools.CREATE_PEER: func(resp tools.NATSResponse) {
2026-02-05 15:48:41 +01:00
logger := oclib.GetLogger()
m := map[string]interface{}{}
err := json.Unmarshal(resp.Payload, &m)
if err != nil {
logger.Err(err)
return
}
search := fmt.Sprintf("%v", m["peer_id"])
access := oclib.NewRequestAdmin(oclib.LibDataEnum(oclib.PEER), nil)
if data := access.Search(nil, search, false); len(data.Data) > 0 {
delete(m, "id")
access.UpdateOne(m, data.Data[0].GetID())
} else {
model := models.Model(access.Collection.EnumIndex())
model = model.Deserialize(m, model)
access.StoreOne(m)
2026-01-28 16:05:47 +01:00
}
2026-02-05 15:48:41 +01:00
2026-01-28 16:05:47 +01:00
},
tools.REMOVE_PEER: func(tools.NATSResponse) {
p := &peer.Peer{}
access := oclib.NewRequestAdmin(oclib.LibDataEnum(oclib.PEER), nil)
access.DeleteOne(p.GetID())
},
})
}