From a28bddd9951f8f527ca83b914db67c64a4eec371 Mon Sep 17 00:00:00 2001
From: Robert Goldmann <deadlocker@gmx.de>
Date: Wed, 13 Jan 2021 19:19:05 +0100
Subject: [PATCH] added route to delete a device

---
 src/logic/databaseNew/Crud.py    |  5 +++++
 src/logic/databaseNew/Schemas.py |  4 ++++
 src/routers/DeviceRouter.py      | 13 +++++++++++++
 3 files changed, 22 insertions(+)

diff --git a/src/logic/databaseNew/Crud.py b/src/logic/databaseNew/Crud.py
index 084cc5c..21cab08 100644
--- a/src/logic/databaseNew/Crud.py
+++ b/src/logic/databaseNew/Crud.py
@@ -23,6 +23,11 @@ def create_device(db: Session, device: Schemas.DeviceCreate):
     return dbDevice
 
 
+def delete_device(db: Session, device: Schemas.Device):
+    db.delete(device)
+    db.commit()
+
+
 def get_sensors(db: Session, skip: int = 0, limit: int = 100):
     return db.query(Models.Sensor).offset(skip).limit(limit).all()
 
diff --git a/src/logic/databaseNew/Schemas.py b/src/logic/databaseNew/Schemas.py
index cc0e4f2..c82d577 100644
--- a/src/logic/databaseNew/Schemas.py
+++ b/src/logic/databaseNew/Schemas.py
@@ -3,6 +3,10 @@ from typing import List
 from pydantic import BaseModel
 
 
+class Status(BaseModel):
+    message: str
+
+
 class SensorBase(BaseModel):
     id: int
     name: str
diff --git a/src/routers/DeviceRouter.py b/src/routers/DeviceRouter.py
index dc8f9a3..4b509e9 100644
--- a/src/routers/DeviceRouter.py
+++ b/src/routers/DeviceRouter.py
@@ -5,6 +5,7 @@ from sqlalchemy.orm import Session
 
 from Dependencies import get_database
 from logic.databaseNew import Schemas, Crud
+from logic.databaseNew.Schemas import Status
 
 router = APIRouter(
     prefix='/device',
@@ -37,3 +38,15 @@ async def create_user(device: Schemas.DeviceCreate, db: Session = Depends(get_da
     if createdDevice:
         raise HTTPException(status_code=400, detail='Device with this name already exists')
     return Crud.create_device(db=db, device=device)
+
+
+@router.delete('/{deviceId}', response_model=Status,
+               summary='Gets a specific device',
+               responses={404: {'description': 'Device not found'}})
+async def read_device(deviceId: int, db: Session = Depends(get_database)):
+    device = Crud.get_device(db, deviceId=deviceId)
+    if device is None:
+        raise HTTPException(status_code=404, detail='Device not found')
+
+    Crud.delete_device(db, device)
+    return Status(message=f"Deleted device {device.id}")
-- 
GitLab