Skip to content
Snippets Groups Projects
main.py 1.49 KiB
Newer Older
  • Learn to ignore specific revisions
  • 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)