From b13a4482a8719a81075c595f855b2ff4214b61eb Mon Sep 17 00:00:00 2001 From: Backend IM Bot Date: Tue, 15 Apr 2025 12:49:38 +0000 Subject: [PATCH] feat: Updated endpoint endpoints/create-soap.post.py via AI --- .../20250415_124934_a7dba322_update_soap.py | 22 +++++++++++++++++++ endpoints/create-soap.post.py | 11 ++++------ helpers/soap_helpers.py | 2 +- models/soap.py | 7 ++++++ schemas/soap.py | 8 +++++++ 5 files changed, 42 insertions(+), 8 deletions(-) create mode 100644 alembic/versions/20250415_124934_a7dba322_update_soap.py diff --git a/alembic/versions/20250415_124934_a7dba322_update_soap.py b/alembic/versions/20250415_124934_a7dba322_update_soap.py new file mode 100644 index 0000000..7d700e0 --- /dev/null +++ b/alembic/versions/20250415_124934_a7dba322_update_soap.py @@ -0,0 +1,22 @@ +"""add color column to soaps table +Revision ID: 2c3d4e5f6a7b +Revises: 8b7d6a1c5f24 +Create Date: 2023-05-25 12:34:56 + +""" +from alembic import op +import sqlalchemy as sa + +# revision identifiers, used by Alembic. +revision = '2c3d4e5f6a7b' +down_revision = '8b7d6a1c5f24' +branch_labels = None +depends_on = None + +def upgrade(): + table_name = "soaps" + op.add_column(table_name, sa.Column('color', sa.String(), nullable=False)) + +def downgrade(): + table_name = "soaps" + op.drop_column(table_name, 'color') \ No newline at end of file diff --git a/endpoints/create-soap.post.py b/endpoints/create-soap.post.py index 23f4384..3422436 100644 --- a/endpoints/create-soap.post.py +++ b/endpoints/create-soap.post.py @@ -1,4 +1,4 @@ -from fastapi import APIRouter, Depends, HTTPException, status +from fastapi import APIRouter, Depends, status from sqlalchemy.orm import Session from core.database import get_db from schemas.soap import SoapCreate, SoapSchema @@ -7,12 +7,9 @@ from helpers.soap_helpers import create_soap router = APIRouter() @router.post("/create-soap", status_code=status.HTTP_201_CREATED, response_model=SoapSchema) -async def create_new_soap( +async def add_color_to_soap( soap_data: SoapCreate, db: Session = Depends(get_db) ): - try: - new_soap = create_soap(db=db, soap_data=soap_data) - return new_soap - except ValueError as e: - raise HTTPException(status_code=400, detail=str(e)) \ No newline at end of file + new_soap = create_soap(db=db, soap_data=soap_data) + return new_soap \ No newline at end of file diff --git a/helpers/soap_helpers.py b/helpers/soap_helpers.py index 9e10ba5..3eb641b 100644 --- a/helpers/soap_helpers.py +++ b/helpers/soap_helpers.py @@ -28,7 +28,7 @@ def create_soap(db: Session, soap_data: SoapCreate) -> SoapSchema: SoapSchema: The newly created soap object. """ try: - db_soap = Soap(name=soap_data.name) + db_soap = Soap(name=soap_data.name, color=soap_data.color) db.add(db_soap) db.commit() db.refresh(db_soap) diff --git a/models/soap.py b/models/soap.py index 2145ab6..8e7001b 100644 --- a/models/soap.py +++ b/models/soap.py @@ -3,11 +3,18 @@ from sqlalchemy.dialects.postgresql import UUID from sqlalchemy.sql import func from core.database import Base import uuid +from sqlalchemy import Enum + +class SoapColor(str, Enum): + RED = "red" + BLUE = "blue" + GREEN = "green" class Soap(Base): __tablename__ = "soaps" id = Column(UUID(as_uuid=True), primary_key=True, default=uuid.uuid4) name = Column(String, nullable=False, unique=True, index=True) + color = Column(Enum(SoapColor), nullable=False) created_at = Column(DateTime, default=func.now()) updated_at = Column(DateTime, default=func.now(), onupdate=func.now()) \ No newline at end of file diff --git a/schemas/soap.py b/schemas/soap.py index 0e00874..29079c3 100644 --- a/schemas/soap.py +++ b/schemas/soap.py @@ -2,15 +2,23 @@ from pydantic import BaseModel, Field from typing import Optional from datetime import datetime from uuid import UUID +from enum import Enum + +class SoapColor(str, Enum): + RED = "red" + BLUE = "blue" + GREEN = "green" class SoapBase(BaseModel): name: str = Field(..., description="Name of the soap") + color: SoapColor = Field(..., description="Color of the soap") class SoapCreate(SoapBase): pass class SoapUpdate(SoapBase): name: Optional[str] = Field(None, description="Updated name of the soap") + color: Optional[SoapColor] = Field(None, description="Updated color of the soap") class SoapSchema(SoapBase): id: UUID