feat: add contact form submission endpoint with field validation (auto-linted)

This commit is contained in:
Backend IM Bot 2025-04-28 13:32:17 +00:00
parent 8f0883cc53
commit abc44b43e7
2 changed files with 10 additions and 11 deletions

View File

@ -2,7 +2,7 @@ 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 from schemas.contact_form import ContactFormCreate
from helpers.contact_form import create_contact_form, validate_contact_form_data from helpers.contact_form_helpers import create_contact_form, validate_contact_form_data
router = APIRouter() router = APIRouter()
@ -12,28 +12,27 @@ async def submit_contact_form(
db: Session = Depends(get_db) db: Session = Depends(get_db)
): ):
""" """
Submit a contact form with name, email, and message fields. Submit a contact form with name, email, and message.
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
validation_errors = validate_contact_form_data({ 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 400 with error details # If there are validation errors, return 400 with error details
if validation_errors: if errors:
raise HTTPException( raise HTTPException(
status_code=status.HTTP_400_BAD_REQUEST, status_code=status.HTTP_400_BAD_REQUEST,
detail=validation_errors detail=errors
) )
# Create the contact form in the database # Create the contact form entry in the database
created_form = create_contact_form(db=db, contact_form_data=contact_form) create_contact_form(db=db, contact_form_data=contact_form)
return { return {
"status": "success", "status": "success",
"message": "Contact form submitted successfully", "message": "Contact form submitted successfully"
"id": created_form.id
} }

View File

@ -34,8 +34,8 @@ 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, checking for required fields and using
Uses email_validator package for email validation. 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.