from sqlalchemy.orm import Session from models.contact_form import ContactForm from schemas.contact_form import ContactFormCreate import re def create_contact_form(db: Session, contact_data: ContactFormCreate) -> ContactForm: """ Creates a new contact form in the database. Args: db (Session): The database session. contact_data (ContactFormCreate): The data for the contact form to create. Returns: ContactForm: The newly created contact form object. """ validate_contact_form_data(contact_data) db_contact_form = ContactForm(**contact_data.dict()) db.add(db_contact_form) db.commit() db.refresh(db_contact_form) return db_contact_form def validate_contact_form_data(contact_data: ContactFormCreate) -> None: """ Validates the contact form data. Args: contact_data (ContactFormCreate): The contact form data to validate. Raises: ValueError: If any of the required fields are missing or the email is invalid. """ if not contact_data.name: raise ValueError("Name is required") if not contact_data.email: raise ValueError("Email is required") if not contact_data.message: raise ValueError("Message is required") if not is_valid_email(contact_data.email): raise ValueError("Invalid email format") def is_valid_email(email: str) -> bool: """ Checks if the given email is in a valid format. Args: email (str): The email address to validate. Returns: bool: True if the email is valid, False otherwise. """ pattern = r'^[\w\.-]+@[\w\.-]+\.\w+$' return bool(re.match(pattern, email))