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