Skip to content
Snippets Groups Projects
Commit 12f99ca3 authored by Robert Goldmann's avatar Robert Goldmann
Browse files

split routing into specific router

parent b7b7f397
No related branches found
No related tags found
No related merge requests found
from logic.databaseNew.Database import SessionLocal
def get_database():
db = SessionLocal()
try:
yield db
finally:
db.close()
import json import json
from typing import List
import uvicorn import uvicorn
from fastapi import FastAPI, Depends, HTTPException from fastapi import FastAPI
from pydantic import BaseModel
from sqlalchemy.orm import Session
from logic.databaseNew import Models, Schemas, Crud from logic.databaseNew import Models
from logic.databaseNew.Database import engine, SessionLocal from logic.databaseNew.Database import engine
from routers import DeviceRouter
Models.Base.metadata.create_all(bind=engine) Models.Base.metadata.create_all(bind=engine)
app = FastAPI() app = FastAPI()
app.include_router(DeviceRouter.router)
with open('../settings.json', 'r', encoding='UTF-8') as f: with open('../settings.json', 'r', encoding='UTF-8') as f:
settings = json.load(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__': if __name__ == '__main__':
uvicorn.run(app, host='0.0.0.0', port=8000) uvicorn.run(app, host='0.0.0.0', port=8000)
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
router = APIRouter(
prefix='/devices',
tags=['devices'],
responses={404: {'description': 'Not found'}},
)
@router.get('/', response_model=List[Schemas.Device])
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, 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, 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)
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment