From 18983b178c8763b639db2626859b2ebfc22f3d5c Mon Sep 17 00:00:00 2001 From: Backend IM Bot Date: Mon, 28 Apr 2025 14:22:58 +0000 Subject: [PATCH] =?UTF-8?q?feat:=20Add=20contact=20form=20submission=20end?= =?UTF-8?q?point=20with=20validation=20=E2=9C=85=20(auto-linted)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...428_142248_3d889e16_update_contact_form.py | 21 +++++++++++++++++++ endpoints/form.post.py | 15 +++++++------ 2 files changed, 30 insertions(+), 6 deletions(-) create mode 100644 alembic/versions/20250428_142248_3d889e16_update_contact_form.py diff --git a/alembic/versions/20250428_142248_3d889e16_update_contact_form.py b/alembic/versions/20250428_142248_3d889e16_update_contact_form.py new file mode 100644 index 0000000..897a190 --- /dev/null +++ b/alembic/versions/20250428_142248_3d889e16_update_contact_form.py @@ -0,0 +1,21 @@ +"""add name and message columns to contact_forms table +Revision ID: 8bac97d0f6e1 +Revises: 1a2b3c4d5e6f +Create Date: 2023-05-25 15:38:44.692924 +""" +from alembic import op +import sqlalchemy as sa + +# revision identifiers, used by Alembic +revision = '8bac97d0f6e1' +down_revision = '1a2b3c4d5e6f' +branch_labels = None +depends_on = None + +def upgrade(): + op.add_column('contact_forms', sa.Column('name', sa.String(), nullable=False)) + op.add_column('contact_forms', sa.Column('message', sa.Text(), nullable=False)) + +def downgrade(): + op.drop_column('contact_forms', 'message') + op.drop_column('contact_forms', 'name') \ No newline at end of file diff --git a/endpoints/form.post.py b/endpoints/form.post.py index 2cc5bff..8449516 100644 --- a/endpoints/form.post.py +++ b/endpoints/form.post.py @@ -1,13 +1,16 @@ -from fastapi import APIRouter, HTTPException +from fastapi import APIRouter, HTTPException, status from helpers.contact_form_helpers import create_contact_form, validate_email from schemas.contact_form import ContactFormCreate +from sqlalchemy.orm import Session +from fastapi import Depends +from database import get_db router = APIRouter() -@router.post("/form", status_code=201) -async def submit_contact_form(contact_form_data: ContactFormCreate): - if not validate_email(contact_form_data.email): - raise HTTPException(status_code=400, detail="Invalid email format") +@router.post("/form", status_code=status.HTTP_201_CREATED, response_model=ContactFormCreate) +async def create_form(contact_form_data: ContactFormCreate, db: Session = Depends(get_db)): + if not contact_form_data.name or not contact_form_data.message or not contact_form_data.email or not validate_email(contact_form_data.email): + raise HTTPException(status_code=400, detail="One or more required fields are missing or invalid") - new_contact_form = create_contact_form(contact_form_data=contact_form_data) + new_contact_form = create_contact_form(db=db, contact_form_data=contact_form_data) return new_contact_form \ No newline at end of file