From 071c37eb534c9efcda9aff49d2c0caad58b7be64 Mon Sep 17 00:00:00 2001
From: Robert Goldmann <deadlocker@gmx.de>
Date: Sat, 16 Jan 2021 23:00:25 +0100
Subject: [PATCH] fixed device update method

---
 src/logic/routers/DeviceRouter.py | 18 ++++++++++++------
 1 file changed, 12 insertions(+), 6 deletions(-)

diff --git a/src/logic/routers/DeviceRouter.py b/src/logic/routers/DeviceRouter.py
index 1d384f9..2cff344 100644
--- a/src/logic/routers/DeviceRouter.py
+++ b/src/logic/routers/DeviceRouter.py
@@ -34,20 +34,26 @@ async def read_device(deviceId: int, db: Session = Depends(get_database)):
              responses={400: {'description': 'Device with this name already exists'}},
              dependencies=[Depends(check_api_key)])
 async def create_device(device: Schemas.DeviceCreate, db: Session = Depends(get_database)):
-    createdDevice = Crud.get_device_by_name(db, device.name)
-    if createdDevice:
+    existingDevice = Crud.get_device_by_name(db, device.name)
+    if existingDevice:
         raise HTTPException(status_code=400, detail='Device with this name already exists')
     return Crud.create_device(db=db, device=device)
 
 
 @router.put('/{deviceId}', response_model=Schemas.Device,
-            summary='Updates a  device',
-            responses={404: {'description': 'Device not found'}},
+            summary='Updates a device',
+            responses={400: {'description': 'Device with this name already exists'},
+                       404: {'description': 'Device not found'}},
             dependencies=[Depends(check_api_key)])
 async def update_device(deviceId: int, device: Schemas.DeviceCreate, db: Session = Depends(get_database)):
-    createdDevice = Crud.get_device_by_name(db, device.name)
-    if createdDevice:
+    existingDevice = Crud.get_device(db, deviceId)
+    if not existingDevice:
         raise HTTPException(status_code=404, detail='Device not found')
+
+    existingDevice = Crud.get_device_by_name(db, device.name)
+    if existingDevice:
+        raise HTTPException(status_code=400, detail='Device with this name already exists')
+
     return Crud.update_device(db=db, deviceId=deviceId, device=device)
 
 
-- 
GitLab