50 lines
1.7 KiB
Python
50 lines
1.7 KiB
Python
import re
|
|
from sqlalchemy.orm import Session
|
|
from models.contact_form_submission import ContactFormSubmission
|
|
from schemas.contact_form_submission import ContactFormSubmissionCreate
|
|
from fastapi import HTTPException
|
|
|
|
def validate_email(email: str) -> bool:
|
|
"""
|
|
Validates an email address using a regular expression.
|
|
|
|
Args:
|
|
email (str): The email address to validate.
|
|
|
|
Returns:
|
|
bool: True if the email is valid, False otherwise.
|
|
"""
|
|
email_regex = r'^[\w\.-]+@[\w\.-]+\.\w+$'
|
|
return bool(re.match(email_regex, email))
|
|
|
|
def create_contact_form_submission(db: Session, submission_data: ContactFormSubmissionCreate) -> ContactFormSubmission:
|
|
"""
|
|
Creates a new contact form submission in the database.
|
|
|
|
Args:
|
|
db (Session): The database session.
|
|
submission_data (ContactFormSubmissionCreate): The data for the submission to create.
|
|
|
|
Returns:
|
|
ContactFormSubmission: The newly created contact form submission object.
|
|
|
|
Raises:
|
|
HTTPException: If any required field is missing or the email is invalid.
|
|
"""
|
|
# Validate required fields
|
|
if not submission_data.name:
|
|
raise HTTPException(status_code=400, detail="Name is required")
|
|
if not submission_data.email:
|
|
raise HTTPException(status_code=400, detail="Email is required")
|
|
if not submission_data.message:
|
|
raise HTTPException(status_code=400, detail="Message is required")
|
|
|
|
# Validate email format
|
|
if not validate_email(submission_data.email):
|
|
raise HTTPException(status_code=400, detail="Invalid email format")
|
|
|
|
db_submission = ContactFormSubmission(**submission_data.dict())
|
|
db.add(db_submission)
|
|
db.commit()
|
|
db.refresh(db_submission)
|
|
return db_submission |