Newer
Older
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
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)