from fastapi import FastAPI, Depends, HTTPException from sqlalchemy.orm import Session from fastapi.middleware.cors import CORSMiddleware import models import schemas import crud from database import SessionLocal, engine models.Base.metadata.create_all(bind=engine) app = FastAPI() # CORS app.add_middleware( CORSMiddleware, allow_origins=["*"], allow_credentials=True, allow_methods=["*"], allow_headers=["*"], ) # Database Session def get_db(): db = SessionLocal() try: yield db finally: db.close() # GET ITEMS @app.get("/items", response_model=list[schemas.ItemResponse]) def get_items(db: Session = Depends(get_db)): return crud.get_items(db) # CREATE ITEM @app.post("/items", response_model=schemas.ItemResponse) def create_item( item: schemas.ItemCreate, db: Session = Depends(get_db) ): return crud.create_item(db, item.title) # DELETE ITEM @app.delete("/items/{item_id}") def delete_item( item_id: int, db: Session = Depends(get_db) ): item = crud.delete_item(db, item_id) if not item: raise HTTPException( status_code=404, detail="Item not found" ) return {"message": "Item deleted"} # SPIN @app.post("/spin") def spin(db: Session = Depends(get_db)): winner = crud.spin_wheel(db) if not winner: raise HTTPException( status_code=400, detail="No items available" ) return { "winner": { "id": winner.id, "title": winner.title } }