Files
oc-peer/infrastructure/nats.go
2026-02-05 15:48:41 +01:00

43 lines
1.1 KiB
Go

package infrastructure
import (
"encoding/json"
"fmt"
oclib "cloud.o-forge.io/core/oc-lib"
"cloud.o-forge.io/core/oc-lib/models"
"cloud.o-forge.io/core/oc-lib/models/peer"
"cloud.o-forge.io/core/oc-lib/tools"
)
func ListenNATS() {
fmt.Println("ListenNATS")
tools.NewNATSCaller().ListenNats(map[tools.NATSMethod]func(tools.NATSResponse){
tools.CREATE_PEER: func(resp tools.NATSResponse) {
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)
}
},
tools.REMOVE_PEER: func(tools.NATSResponse) {
p := &peer.Peer{}
access := oclib.NewRequestAdmin(oclib.LibDataEnum(oclib.PEER), nil)
access.DeleteOne(p.GetID())
},
})
}