From aefa8d927bf640ec0f656ee07e8a60451888004d Mon Sep 17 00:00:00 2001 From: Nedim Date: Fri, 15 Sep 2023 07:41:39 +0200 Subject: [PATCH] Fixed comments for create new device where device not found while saving device_info --- controllers/auth_controller.go | 7 +++- controllers/devices_controller.go | 44 +++++++++++++++++--------- controllers/devices_controller_test.go | 1 - 3 files changed, 35 insertions(+), 17 deletions(-) diff --git a/controllers/auth_controller.go b/controllers/auth_controller.go index eb444bd..203ca47 100644 --- a/controllers/auth_controller.go +++ b/controllers/auth_controller.go @@ -1,6 +1,9 @@ package controllers import ( + "log" + "net/http" + "gitlab.com/pactual1/backend/middlewares" "gitlab.com/pactual1/backend/shared" @@ -11,7 +14,7 @@ import ( type AuthController struct{} -func (this AuthController)HandleLogin(c *gin.Context) { +func (AuthController)HandleLogin(c *gin.Context) { userId:="123" username:="Beast" roles:= []string{shared.RoleAdmin, shared.RoleProUser} @@ -21,6 +24,8 @@ func (this AuthController)HandleLogin(c *gin.Context) { //issue token token, err := middlewares.GenerateToken([]byte(middlewares.SigningKey), userId,username, roles) if err != nil { + log.Printf("Unable to generate token %v", err) + c.JSON(http.StatusInternalServerError, err) } c.JSON(200, token) diff --git a/controllers/devices_controller.go b/controllers/devices_controller.go index b6e9736..f395192 100644 --- a/controllers/devices_controller.go +++ b/controllers/devices_controller.go @@ -2,10 +2,12 @@ package controllers import ( "encoding/json" + "errors" "log" "net/http" "github.com/gin-gonic/gin" + "github.com/jinzhu/gorm" "gitlab.com/pactual1/backend/models" "gitlab.com/pactual1/backend/shared" ) @@ -18,30 +20,42 @@ func SaveDeviceInfofunc(c *gin.Context) { err := json.Unmarshal(rawData, &deviceInfo) if err != nil { c.JSON(http.StatusBadRequest, gin.H{"error": "Invalid JSON payload"}) + log.Printf("Invalid json pyload : %v",err) return } - - // Unmarshal to the deviceInfo structure - err = json.Unmarshal(rawData, &deviceInfo) - if err != nil { - c.JSON(http.StatusBadRequest, gin.H{"error": "Invalid JSON payload"}) - return - } - + deviceInfo.RawJSON = string(rawData) - // Attempt to find the device by IMEI; if found, set the DeviceID - var device models.Device - if err := shared.GetDb().Where("imei = ?", deviceInfo.IMEI).First(&device).Error; err == nil { - deviceInfo.DeviceID = device.ID - } else { - log.Printf("Could not find device with imei %v", deviceInfo.IMEI) - } + // Attempt to find the device by IMEI; if not found, create a new device + var device models.Device + if err := shared.GetDb().Where("imei = ?", deviceInfo.IMEI).First(&device).Error; err != nil { + if errors.Is(err, gorm.ErrRecordNotFound) { + // Create new device + newDevice := models.Device{ + IMEI: deviceInfo.IMEI, + IMSI: deviceInfo.IMSI, + DeviceConfiguration: string(rawData), + } + if err := shared.GetDb().Create(&newDevice).Error; err != nil { + log.Printf("CREATE -Device DB Error: %v",err) + c.JSON(http.StatusInternalServerError, gin.H{"error": "Could not create new device"}) + return + } + deviceInfo.DeviceID = newDevice.ID + } else { + log.Printf("CREATE -Device DB Error: %v",err) + c.JSON(http.StatusInternalServerError, gin.H{"error": "Database error"}) + return + } + } else { + deviceInfo.DeviceID = device.ID + } // Save deviceInfo to your database if err := shared.GetDb().Create(&deviceInfo).Error; err != nil { + log.Printf("SaveDeviceInfo CREATE -DeviceInfo DB Error: %v",err) c.JSON(http.StatusInternalServerError, gin.H{"error": "Could not save device info"}) return } diff --git a/controllers/devices_controller_test.go b/controllers/devices_controller_test.go index 3587e95..1c7c9ba 100644 --- a/controllers/devices_controller_test.go +++ b/controllers/devices_controller_test.go @@ -59,7 +59,6 @@ func TestSaveDeviceInfofunc(t *testing.T) { t.Fatalf("Expected no error, got %v", err) } - // Here, ideally you'd want to check your logs to ensure the message was logged assert.Equal(t, 200, resp.StatusCode) }) -- 2.47.3