import re from pydantic import ValidationError from sqlalchemy.orm import Session from models.contact_form import ContactForm from schemas.contact_form import ContactFormCreate def validate_contact_form_data(data: ContactFormCreate) -> bool: """ Validates the contact form data. Args: data (ContactFormCreate): The contact form data to validate. Returns: bool: True if the data is valid, False otherwise. """ try: data.name data.email data.message except ValidationError: return False if not data.name or not data.email or not data.message: return False email_regex = r'\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Z|a-z]{2,}\b' if not re.match(email_regex, data.email): return False return True def create_contact_form(db: Session, contact_form_data: ContactFormCreate) -> ContactForm: """ Creates a new contact form in the database. Args: db (Session): The database session. contact_form_data (ContactFormCreate): The data for the contact form to create. Returns: ContactForm: The newly created contact form object. """ if not validate_contact_form_data(contact_form_data): raise ValueError("Invalid contact form data") db_contact_form = ContactForm(**contact_form_data.dict()) db.add(db_contact_form) db.commit() db.refresh(db_contact_form) return db_contact_form