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 core.database import get_db
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()
@ -12,28 +12,27 @@ async def submit_contact_form(
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.
"""
# Validate the contact form data
validation_errors = validate_contact_form_data({
errors = validate_contact_form_data({
"name": contact_form.name,
"email": contact_form.email,
"message": contact_form.message
})
# If there are validation errors, return 400 with error details
if validation_errors:
if errors:
raise HTTPException(
status_code=status.HTTP_400_BAD_REQUEST,
detail=validation_errors
detail=errors
)
# Create the contact form in the database
created_form = create_contact_form(db=db, contact_form_data=contact_form)
# Create the contact form entry in the database
create_contact_form(db=db, contact_form_data=contact_form)
return {
"status": "success",
"message": "Contact form submitted successfully",
"id": created_form.id
"message": "Contact form submitted successfully"
}

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]:
"""
Validates contact form data manually, checking for required fields and valid email format.
Uses email_validator package for email validation.
Validates contact form data, checking for required fields and using
email_validator package for email validation.
Args:
data (Dict[str, Any]): The contact form data to validate.