import re from typing import List from sqlalchemy.orm import Session from models.contactform import ContactForm from schemas.contactform import ContactFormCreate, ContactFormSchema from fastapi import HTTPException def validate_email(email: str) -> bool: """ Validates if the provided email is in a valid format. Args: email (str): The email address to validate. Returns: bool: True if the email is valid, False otherwise. """ email_regex = r'\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Z|a-z]{2,}\b' return bool(re.match(email_regex, email)) def create_contactform(db: Session, contactform_data: ContactFormCreate) -> ContactForm: """ Creates a new contact form in the database. Args: db (Session): The database session. contactform_data (ContactFormCreate): The data for the contact form to create. Returns: ContactForm: The newly created contact form object. """ if not contactform_data.name or not contactform_data.email or not contactform_data.message: raise HTTPException(status_code=400, detail="All fields are required") if not validate_email(contactform_data.email): raise HTTPException(status_code=400, detail="Invalid email format") db_contactform = ContactForm(**contactform_data.dict()) db.add(db_contactform) db.commit() db.refresh(db_contactform) return db_contactform def get_all_contactforms(db: Session) -> List[ContactFormSchema]: """ Retrieves all contact forms from the database. Args: db (Session): The database session. Returns: List[ContactFormSchema]: A list of all contact form objects. """ return [ContactFormSchema.from_orm(contactform) for contactform in db.query(ContactForm).all()]