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