from typing import List from fastapi import APIRouter, HTTPException, Depends 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', tags=['device'], responses={404: {'description': 'Not found'}}, ) @router.get('/', response_model=List[Schemas.Device], summary='Gets all devices') async def read_devices(skip: int = 0, limit: int = 100, db: Session = Depends(get_database)): return Crud.get_devices(db, skip=skip, limit=limit) @router.get('/{deviceId}', response_model=Schemas.Device, 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') return device @router.post('/', response_model=Schemas.Device, summary='Adds a new device', responses={400: {'description': 'Device with this name already exists'}}) async def create_user(device: Schemas.DeviceCreate, db: Session = Depends(get_database)): createdDevice = Crud.get_device_by_name(db, device.name) 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}")