import json from typing import List import uvicorn from fastapi import FastAPI, Depends, HTTPException from pydantic import BaseModel from sqlalchemy.orm import Session from logic.databaseNew import Models, Schemas, Crud from logic.databaseNew.Database import engine, SessionLocal Models.Base.metadata.create_all(bind=engine) app = FastAPI() with open('../settings.json', 'r', encoding='UTF-8') as f: settings = json.load(f) # Dependency def get_db(): db = SessionLocal() try: yield db finally: db.close() class Device(BaseModel): id: int name: str @app.get('/devices/', response_model=List[Schemas.Device]) def read_devices(skip: int = 0, limit: int = 100, db: Session = Depends(get_db)): return Crud.get_devices(db, skip=skip, limit=limit) @app.get('/devices/{deviceId}', response_model=Schemas.Device) def read_device(deviceId: int, db: Session = Depends(get_db)): device = Crud.get_device(db, deviceId=deviceId) if device is None: raise HTTPException(status_code=404, detail='Device not found') return device @app.post("/devices/", response_model=Schemas.Device) def create_user(device: Schemas.DeviceCreate, db: Session = Depends(get_db)): 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) if __name__ == '__main__': uvicorn.run(app, host='0.0.0.0', port=8000)