Projekt

Obecné

Profil

« Předchozí | Další » 

Revize 6c1e92e3

Přidáno uživatelem Matěj Zeman před více než 2 roky(ů)

re #9425 Struktury upraveny dle vize. Endpointy rozděleny do souboru podle funkcionality.

Zobrazit rozdíly:

server/sql_app/main.py
1
from typing import List
2

  
3
from fastapi import Depends, FastAPI, HTTPException
4
from sqlalchemy.orm import Session
5
from sql_app import crud, models, schemas
6 1
import uvicorn
7
from database import SessionLocal, engine
2
from server.sql_app.api.devices import device
3
from server.sql_app.api.licenses import licenses
4
from server.sql_app.api.pcs import pcs
5
from server.sql_app.api.usb_logs import usblogs
6
from fastapi import FastAPI
8 7

  
9
models.Base.metadata.create_all(bind=engine)
10 8

  
11 9
app = FastAPI(root_path="/api/v1")
12

  
13

  
14
# Dependency
15
def get_db():
16
    db = SessionLocal()
17
    try:
18
        yield db
19
    finally:
20
        db.close()
21

  
22

  
23
@app.post("/device/", response_model=schemas.Device)
24
def create_device(device: schemas.DeviceCreate, db: Session = Depends(get_db)):
25
    print(crud.create_device(db=db, device=device))
26

  
27

  
28
@app.get("/devices/", response_model=List[schemas.Device])
29
def read_devices(skip: int = 0, limit: int = 100, db: Session = Depends(get_db)):
30
    devices = crud.get_devices(db, skip=skip, limit=limit)
31
    return devices
32

  
33

  
34
@app.get("/device/{device_id}", response_model=schemas.Device)
35
def read_device(device_id: int, db: Session = Depends(get_db)):
36
    db_device = crud.get_device(db, device_id=device_id)
37
    if db_device is None:
38
        raise HTTPException(status_code=404, detail="Device not found")
39
    return db_device
40

  
41

  
42
@app.post("/usb-logs/", response_model=schemas.USBLog)
43
def create_device_logs(log: schemas.USBTempBase, db: Session = Depends(get_db)):
44
    dev = crud.find_device(db, log.device)
45
    if dev is None:
46
        dev = crud.create_device(db=db, device=log.device)
47

  
48
    print(crud.create_device_logs(db=db, item=log, dev_id=dev.id))
49

  
50

  
51
@app.get("/logs/", response_model=List[schemas.USBLog])
52
def read_logs(skip: int = 0, limit: int = 100, db: Session = Depends(get_db)):
53
    items = crud.get_logs(db, skip=skip, limit=limit)
54
    return items
55

  
56

  
57
@app.get("/logs/{device_id}", response_model=List[schemas.USBLog])
58
def read_log(device_id: int, db: Session = Depends(get_db)):
59
    db_log = crud.get_log(db, device_id=device_id)
60
    if db_log is None:
61
        raise HTTPException(status_code=404, detail="Logs not found")
62
    return db_log
63

  
10
app.include_router(device)
11
app.include_router(licenses)
12
app.include_router(pcs)
13
app.include_router(usblogs)
64 14

  
65 15
if __name__ == "__main__":
66 16
    uvicorn.run(app, host="192.168.0.22", port=8000)
17

  

Také k dispozici: Unified diff