3rd-project-7hltbg/endpoints/create-fruit.post.py

26 lines
1.0 KiB
Python

from fastapi import APIRouter, Depends, HTTPException, status
from sqlalchemy.orm import Session
from core.database import get_db
from schemas.fruit import FruitCreate, FruitSchema
from helpers.fruit_helpers import create_fruit, sanitize_fruit_name, normalize_color_name, validate_fruit_data
router = APIRouter()
@router.post("/create-fruit", response_model=FruitSchema, status_code=status.HTTP_201_CREATED)
async def create_new_fruit(
fruit: FruitCreate,
db: Session = Depends(get_db)
):
# Sanitize and normalize input data
sanitized_name = sanitize_fruit_name(fruit.name)
normalized_color = normalize_color_name(fruit.color)
# Validate the sanitized data
fruit_data = {"name": sanitized_name, "color": normalized_color}
if not validate_fruit_data(fruit_data):
raise HTTPException(status_code=400, detail="Invalid fruit data")
# Create fruit using helper function
fruit.name = sanitized_name
fruit.color = normalized_color
return create_fruit(db=db, fruit_data=fruit)