Files
py_luggage/api/db.py
T

103 lines
2.9 KiB
Python

from fastapi import APIRouter, HTTPException, Depends, Header
import logging
import db
import api_security as auth
from pydantic import BaseModel
from api import tokens
#Logging
logging.basicConfig(
filename='api.log', # Log to a file
level=logging.DEBUG, # Log everything (DEBUG and above)
format='%(asctime)s %(levelname)s %(message)s'
)
logging.info('Application started')
try:
logging.debug('Debug info here')
except Exception as e:
logging.exception('An error occurred')
router = APIRouter(prefix="/db", tags=["db"])
@router.get("/help")
def get_help():
return {"name of clothes": "example",
"weight": "sample weight (only floats)",
"pieces": "sample pieces (only ints)"}
class Item_name(BaseModel):
name_of_clothes: str
class Config:
fields = {
"name_of_clothes": "name of clothes"
}
class Item_weight(BaseModel):
weight: float
class Item_piece(BaseModel):
pieces: int
class Item_duration(BaseModel):
duration: str
@router.post("/insert", status_code=201)
def insert(item_name: Item_name, item_weight: Item_weight, item_pieces: Item_piece, token: str = Depends(tokens.check_token)):
name = item_name.name_of_clothes.upper()
weight = item_weight.weight
pieces = item_pieces.pieces
db.new_part(name, weight, pieces)
logging.info("new Item created in DB")
return {"message": "Item inserted"}
@router.put("/update/{clothe_name}/pieces", status_code=202)
def update_pieces(clothe_name: str, item_pieces: Item_piece, token: str = Depends(tokens.check_token)):
name = clothe_name.upper()
pieces = item_pieces.pieces
if db.check_clothe(name) != None:
db.update_pieces(name, pieces)
logging.info(f"Item {name} was set a new count")
return {"message": "pieces updated"}
else:
logging.error(f"Item {name} not found")
raise HTTPException(status_code=404, detail=f"Item {name} not found")
@router.put("/update/{clothe_name}/weight", status_code=202)
def update_weight(clothe_name: str, item: Item_weight, token: str = Depends(tokens.check_token)):
name = clothe_name.upper()
weight = item.weight
if db.check_clothe(name) != None:
db.update_weight(name, weight)
logging.info(f"Item {name} was set a new weight")
return {"message": "weight updated"}
else:
logging.error(f"Item {name} not found")
raise HTTPException(status_code=404, detail=f"Item {name} not found")
@router.delete("/{clothe_name}/delete", status_code=204)
def delete(clothe_name: str, token: str = Depends(tokens.check_token)):
name = clothe_name.upper()
if db.check_clothe(name) != None:
db.delete(name)
logging.critical(f"Item {name} was deleted")
return {"message": "Item was deleted"}
else:
logging.error(f"Item {name} not found")
raise HTTPException(status_code=404, detail=f"Item {name} not found")