From 03341dbe424f44212f3958979b6d069cfd6c06fc Mon Sep 17 00:00:00 2001 From: Sonja Happ Date: Mon, 26 Oct 2020 12:03:02 +0100 Subject: [PATCH] check if state field exists before processing a message --- routes/infrastructure-component/amqpclient.go | 39 ++++++++++--------- 1 file changed, 20 insertions(+), 19 deletions(-) diff --git a/routes/infrastructure-component/amqpclient.go b/routes/infrastructure-component/amqpclient.go index 7cee748..19cd17e 100644 --- a/routes/infrastructure-component/amqpclient.go +++ b/routes/infrastructure-component/amqpclient.go @@ -261,26 +261,27 @@ func processMessage(message amqp.Delivery) error { return fmt.Errorf("AMQP: Could not unmarshal message to JSON: %v err: %v", string(message.Body), err) } - ICUUID := payload.Properties.UUID - _, err = uuid.Parse(ICUUID) + if payload.State != nil { + // if a message contains a "state" field, it is an update for an IC + ICUUID := payload.Properties.UUID + _, err = uuid.Parse(ICUUID) - if err != nil { - return fmt.Errorf("AMQP: UUID not valid: %v, message ignored: %v \n", ICUUID, string(message.Body)) + if err != nil { + return fmt.Errorf("AMQP: UUID not valid: %v, message ignored: %v \n", ICUUID, string(message.Body)) + } + var sToBeUpdated InfrastructureComponent + err = sToBeUpdated.ByUUID(ICUUID) + + if err == gorm.ErrRecordNotFound { + // create new record + err = createNewICviaAMQP(payload) + } else if err != nil { + // database error + err = fmt.Errorf("AMQP: Database error for IC %v DB error message: %v", ICUUID, err) + } else { + // update record based on payload + err = sToBeUpdated.updateICviaAMQP(payload) + } } - - var sToBeUpdated InfrastructureComponent - err = sToBeUpdated.ByUUID(ICUUID) - - if err == gorm.ErrRecordNotFound { - // create new record - err = createNewICviaAMQP(payload) - } else if err != nil { - // database error - err = fmt.Errorf("AMQP: Database error for IC %v DB error message: %v", ICUUID, err) - } else { - // update record based on payload - err = sToBeUpdated.updateICviaAMQP(payload) - } - return err }