feat: Updated endpoint endpoints/contact-us.post.py via AI

This commit is contained in:
Backend IM Bot 2025-04-15 08:48:16 +00:00
parent a11255b34d
commit 7ffc71b5a0
4 changed files with 52 additions and 16 deletions

View File

@ -0,0 +1,31 @@
"""update Contact model
Revision ID: 98765432109876
Revises: 2a3b4c5d6e7f
Create Date: 2023-05-24 12:00:00
"""
from alembic import op
import sqlalchemy as sa
from sqlalchemy.sql import func
import uuid
# revision identifiers, used by Alembic
revision = '98765432109876'
down_revision = '2a3b4c5d6e7f'
branch_labels = None
depends_on = None
def upgrade():
table_name = "contacts"
op.create_table(
table_name,
sa.Column('id', sa.String(36), primary_key=True, default=lambda: str(uuid.uuid4())),
sa.Column('name', sa.String(), nullable=False),
sa.Column('email', sa.String(), nullable=False),
sa.Column('message', sa.Text(), nullable=False),
sa.Column('created_at', sa.DateTime(), server_default=func.now()),
sa.Column('updated_at', sa.DateTime(), server_default=func.now(), onupdate=func.now())
)
def downgrade():
table_name = "contacts"
op.drop_table(table_name)

View File

@ -1,20 +1,17 @@
from fastapi import APIRouter, HTTPException, status
from schemas.contact import ContactCreate, ContactSchema
from schemas.contact import ContactCreate
from helpers.contact_helpers import create_contact, validate_contact_data
from sqlalchemy.orm import Session
from fastapi import Depends
from core.database import get_db
router = APIRouter()
@router.post("/contact-us", status_code=status.HTTP_201_CREATED, response_model=ContactSchema)
async def create_new_contact(
contact_data: ContactCreate,
db: Session = Depends(get_db)
):
"""Handle contact form submissions"""
if not validate_contact_data(contact_data):
raise HTTPException(status_code=400, detail="Invalid data provided")
@router.post("/contact-us", status_code=status.HTTP_201_CREATED)
async def create_new_contact(contact: ContactCreate):
"""Create a new contact"""
if not validate_contact_data(contact):
raise HTTPException(status_code=400, detail="Invalid contact data")
new_contact = create_contact(contact)
if not new_contact:
raise HTTPException(status_code=400, detail="Failed to create contact")
new_contact = create_contact(db=db, contact_data=contact_data)
return new_contact

View File

@ -15,7 +15,11 @@ def create_contact(db: Session, contact_data: ContactCreate) -> Contact:
Returns:
Contact: The newly created contact object.
"""
db_contact = Contact(**contact_data.dict())
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)
@ -35,7 +39,8 @@ def validate_contact_data(contact_data: ContactCreate) -> bool:
contact_data.name
contact_data.email
contact_data.message
except ValidationError:
except ValidationError as e:
print(f"Validation error: {e}")
return False
if not contact_data.name or not contact_data.message:

View File

@ -16,8 +16,11 @@ class ContactUpdate(ContactBase):
email: Optional[EmailStr] = Field(None, description="Contact's email address")
message: Optional[str] = Field(None, description="Contact's message")
class ContactSchema(ContactBase):
class ContactSchema(BaseModel):
id: uuid.UUID
name: str
email: EmailStr
message: str
created_at: datetime
updated_at: datetime