from fastapi import APIRouter, Depends, HTTPException, status from sqlalchemy.orm import Session from core.database import get_db from schemas.contact import ContactCreate, ContactSchema from typing import Dict, Any from utils.contact_utils import sanitize_contact_input, validate_contact_data from services.contact_service import create_contact, format_contact_response router = APIRouter() @router.post("/contact", status_code=status.HTTP_201_CREATED, response_model=ContactSchema) async def create_contact_submission( contact_data: Dict[str, Any], db: Session = Depends(get_db) ): sanitized_data = sanitize_contact_input(contact_data) validation_errors = validate_contact_data(sanitized_data) if validation_errors: raise HTTPException( status_code=status.HTTP_400_BAD_REQUEST, detail=validation_errors ) contact_create = ContactCreate(**sanitized_data) db_contact = create_contact(db=db, contact_data=contact_create) return format_contact_response(db_contact)