Files
fast_api_livetse/backend/api/user.py
Anahita-Mahmoudi b0ff339525 git add .
git commit -m "feat: improve wheel UI with gold pointer and center circle sync"
2026-05-30 14:20:20 +03:30

63 lines
1.4 KiB
Python

from fastapi import APIRouter
from fastapi import Depends
from fastapi import HTTPException
from sqlalchemy.orm import Session
import schemas
from services import crud
from app.db.session import SessionLocal
from core.logger import get_logger
router = APIRouter()
logger = get_logger('user')
def get_db():
db = SessionLocal()
try:
yield db
finally:
db.close()
# GET ITEMS
@router.get("/items", response_model=list[schemas.ItemResponse])
def get_items(db: Session = Depends(get_db)):
try:
items = crud.get_items(db)
logger.info(f"User fetched items: {len(items)} items")
return items
except Exception as e:
logger.critical(f"Unexpected error fetching items: {e}")
raise
# SPIN
@router.post("/spin")
def spin(db: Session = Depends(get_db)):
try:
winner = crud.spin_wheel(db)
if not winner:
logger.warning("Spin attempted but no items available")
raise HTTPException(
status_code=400,
detail="No items available"
)
logger.info(f"Spin result: {winner.title}")
return {
"winner": {
"id": winner.id,
"title": winner.title
}
}
except HTTPException:
raise
except Exception as e:
logger.critical(f"Unexpected error during spin: {e}")
raise