🔄 refactor: Enhance endpoints/email.post.py endpoint functionality

This commit is contained in:
Backend IM Bot 2025-04-28 12:35:16 +00:00
parent 2608d9d0fa
commit 8f0883cc53
2 changed files with 17 additions and 13 deletions

View File

@ -1,36 +1,39 @@
from fastapi import APIRouter, Depends, HTTPException, status from fastapi import APIRouter, Depends, HTTPException, status
from sqlalchemy.orm import Session from sqlalchemy.orm import Session
from core.database import get_db from core.database import get_db
from schemas.contact_form import ContactFormCreate, ContactFormSchema from schemas.contact_form import ContactFormCreate
from helpers.contact_form_helpers import create_contact_form, validate_contact_form_data from helpers.contact_form import create_contact_form, validate_contact_form_data
router = APIRouter() router = APIRouter()
@router.post("/email", status_code=status.HTTP_201_CREATED, response_model=ContactFormSchema) @router.post("/email", status_code=status.HTTP_201_CREATED)
async def submit_contact_form( async def submit_contact_form(
contact_form: ContactFormCreate, contact_form: ContactFormCreate,
db: Session = Depends(get_db) db: Session = Depends(get_db)
): ):
""" """
Submit a contact form with name, email, and message. Submit a contact form with name, email, and message fields.
All fields are required and email must be in valid format. All fields are required and email must be in valid format.
""" """
# Validate the contact form data # Validate the contact form data
errors = validate_contact_form_data({ validation_errors = validate_contact_form_data({
"name": contact_form.name, "name": contact_form.name,
"email": contact_form.email, "email": contact_form.email,
"message": contact_form.message "message": contact_form.message
}) })
# If there are validation errors, return a 400 response with the error details # If there are validation errors, return 400 with error details
if errors: if validation_errors:
raise HTTPException( raise HTTPException(
status_code=status.HTTP_400_BAD_REQUEST, status_code=status.HTTP_400_BAD_REQUEST,
detail=errors detail=validation_errors
) )
# Create the contact form in the database # Create the contact form in the database
new_contact_form = create_contact_form(db=db, contact_form_data=contact_form) created_form = create_contact_form(db=db, contact_form_data=contact_form)
return new_contact_form return {
"status": "success",
"message": "Contact form submitted successfully",
"id": created_form.id
}

View File

@ -35,6 +35,7 @@ def create_contact_form(db: Session, contact_form_data: ContactFormCreate) -> Co
def validate_contact_form_data(data: Dict[str, Any]) -> Dict[str, str]: def validate_contact_form_data(data: Dict[str, Any]) -> Dict[str, str]:
""" """
Validates contact form data manually, checking for required fields and valid email format. Validates contact form data manually, checking for required fields and valid email format.
Uses email_validator package for email validation.
Args: Args:
data (Dict[str, Any]): The contact form data to validate. data (Dict[str, Any]): The contact form data to validate.
@ -54,8 +55,8 @@ def validate_contact_form_data(data: Dict[str, Any]) -> Dict[str, str]:
try: try:
# Validate email format using email_validator package # Validate email format using email_validator package
validate_email(data["email"]) validate_email(data["email"])
except EmailNotValidError: except EmailNotValidError as e:
errors["email"] = "Email format is invalid" errors["email"] = f"Email validation failed: {str(e)}"
if not data.get("message"): if not data.get("message"):
errors["message"] = "Message is required" errors["message"] = "Message is required"