from fastapi import APIRouter, Depends, HTTPException, status from sqlalchemy.orm import Session from core.database import get_db from schemas.grocery import GroceryCreate, GrocerySchema from helpers.grocery_helpers import create_grocery, get_grocery_by_name, validate_grocery_name, normalize_grocery_name router = APIRouter() @router.post("/create-grocery", response_model=GrocerySchema, status_code=status.HTTP_201_CREATED) async def create_grocery_item( grocery: GroceryCreate, db: Session = Depends(get_db) ): if not validate_grocery_name(grocery.name): raise HTTPException( status_code=status.HTTP_400_BAD_REQUEST, detail="Invalid grocery name" ) normalized_name = normalize_grocery_name(grocery.name) existing_grocery = get_grocery_by_name(db, normalized_name) if existing_grocery: raise HTTPException( status_code=status.HTTP_400_BAD_REQUEST, detail="Grocery with this name already exists" ) grocery_data = GroceryCreate(name=normalized_name) new_grocery = create_grocery(db, grocery_data) if not new_grocery: raise HTTPException( status_code=status.HTTP_400_BAD_REQUEST, detail="Failed to create grocery" ) return new_grocery