package infrastructure import ( "encoding/json" "fmt" oclib "cloud.o-forge.io/core/oc-lib" "cloud.o-forge.io/core/oc-lib/config" "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) { if resp.FromApp == config.GetAppName() { return } 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(resp tools.NATSResponse) { if resp.FromApp == config.GetAppName() { return } p := &peer.Peer{} access := oclib.NewRequestAdmin(oclib.LibDataEnum(oclib.PEER), nil) access.DeleteOne(p.GetID()) }, }) }