feat: add contact form submission endpoint with field validation ✅ (auto-linted)
This commit is contained in:
parent
8f0883cc53
commit
abc44b43e7
@ -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
|
|
||||||
}
|
}
|
@ -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.
|
||||||
|
Loading…
x
Reference in New Issue
Block a user