53 lines
1.3 KiB
Python
53 lines
1.3 KiB
Python
from sqlalchemy.orm import Session
|
|
from pydantic import ValidationError
|
|
from models.contact import Contact
|
|
from schemas.contact import ContactCreate
|
|
import re
|
|
|
|
def create_contact(db: Session, contact_data: ContactCreate) -> Contact:
|
|
"""
|
|
Creates a new contact in the database.
|
|
|
|
Args:
|
|
db (Session): The database session.
|
|
contact_data (ContactCreate): The data for the contact to create.
|
|
|
|
Returns:
|
|
Contact: The newly created contact object.
|
|
"""
|
|
db_contact = Contact(
|
|
name=contact_data.name,
|
|
email=contact_data.email,
|
|
message=contact_data.message
|
|
)
|
|
db.add(db_contact)
|
|
db.commit()
|
|
db.refresh(db_contact)
|
|
return db_contact
|
|
|
|
def validate_contact_data(contact_data: ContactCreate) -> bool:
|
|
"""
|
|
Validates the contact data.
|
|
|
|
Args:
|
|
contact_data (ContactCreate): The contact data to validate.
|
|
|
|
Returns:
|
|
bool: True if the data is valid, False otherwise.
|
|
"""
|
|
try:
|
|
contact_data.name
|
|
contact_data.email
|
|
contact_data.message
|
|
except ValidationError as e:
|
|
print(f"Validation error: {e}")
|
|
return False
|
|
|
|
if not contact_data.name or not contact_data.message:
|
|
return False
|
|
|
|
email_regex = r'^[\w\.-]+@[\w\.-]+\.\w+$'
|
|
if not re.match(email_regex, contact_data.email):
|
|
return False
|
|
|
|
return True |