brave-project-npt1jg/helpers/contact_form_submission_helpers.py

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