feat: Updated endpoint endpoints/fruits.get.py via AI

This commit is contained in:
Backend IM Bot 2025-04-12 12:01:24 +00:00
parent 4150ad4513
commit 806b12f159
5 changed files with 26 additions and 4 deletions

View File

@ -0,0 +1,19 @@
"""add is_ripe field to fruits table
Revision ID: b9c6d3e2f5a7
Revises: a8b5c2d1e9f4
Create Date: 2024-01-30 10:00:00.000000
"""
from alembic import op
import sqlalchemy as sa
# revision identifiers, used by Alembic.
revision = 'b9c6d3e2f5a7'
down_revision = 'a8b5c2d1e9f4'
branch_labels = None
depends_on = None
def upgrade():
op.add_column('fruits', sa.Column('is_ripe', sa.Boolean(), server_default='false', nullable=False))
def downgrade():
op.drop_column('fruits', 'is_ripe')

View File

@ -10,5 +10,4 @@ router = APIRouter()
@router.get("/fruits", response_model=List[FruitSchema]) @router.get("/fruits", response_model=List[FruitSchema])
async def get_fruits(db: Session = Depends(get_db)): async def get_fruits(db: Session = Depends(get_db)):
fruits = get_all_fruits(db) fruits = get_all_fruits(db)
# The color property should already be part of the Fruit model and FruitSchema
return fruits return fruits

View File

@ -8,7 +8,7 @@ from schemas.fruit import FruitCreate, FruitUpdate
def get_all_fruits(db: Session, skip: int = 0, limit: int = 100, active_only: bool = True) -> List[Fruit]: def get_all_fruits(db: Session, skip: int = 0, limit: int = 100, active_only: bool = True) -> List[Fruit]:
""" """
Retrieves all fruits from the database with optional pagination and active filtering. Retrieves all fruits from the database with optional pagination and active filtering.
Returns full fruit objects including color. Returns full fruit objects including color and ripeness status.
Args: Args:
db (Session): The database session db (Session): The database session
@ -56,7 +56,7 @@ def create_fruit(db: Session, fruit_data: FruitCreate) -> Fruit:
Args: Args:
db (Session): The database session db (Session): The database session
fruit_data (FruitCreate): The data for the fruit to create, including color fruit_data (FruitCreate): The data for the fruit to create, including color and ripeness
Returns: Returns:
Fruit: The newly created fruit object Fruit: The newly created fruit object
@ -74,7 +74,7 @@ def update_fruit(db: Session, fruit_id: UUID, fruit_data: FruitUpdate) -> Option
Args: Args:
db (Session): The database session db (Session): The database session
fruit_id (UUID): The ID of the fruit to update fruit_id (UUID): The ID of the fruit to update
fruit_data (FruitUpdate): The update data for the fruit, including color fruit_data (FruitUpdate): The update data for the fruit, including color and ripeness
Returns: Returns:
Optional[Fruit]: The updated fruit object if found, otherwise None Optional[Fruit]: The updated fruit object if found, otherwise None

View File

@ -12,5 +12,6 @@ class Fruit(Base):
description = Column(Text, nullable=True) description = Column(Text, nullable=True)
color = Column(String(50), nullable=True) color = Column(String(50), nullable=True)
is_active = Column(Boolean, server_default='true', nullable=False) is_active = Column(Boolean, server_default='true', nullable=False)
is_ripe = Column(Boolean, server_default='false', nullable=False)
created_at = Column(DateTime(timezone=True), server_default=func.now(), nullable=False) created_at = Column(DateTime(timezone=True), server_default=func.now(), nullable=False)
updated_at = Column(DateTime(timezone=True), server_default=func.now(), onupdate=func.now(), nullable=False) updated_at = Column(DateTime(timezone=True), server_default=func.now(), onupdate=func.now(), nullable=False)

View File

@ -11,6 +11,7 @@ class FruitBase(BaseModel):
description: Optional[str] = Field(None, description="Fruit description") description: Optional[str] = Field(None, description="Fruit description")
color: Optional[str] = Field(None, max_length=50, description="Fruit color") color: Optional[str] = Field(None, max_length=50, description="Fruit color")
is_active: bool = Field(True, description="Whether the fruit is active") is_active: bool = Field(True, description="Whether the fruit is active")
is_ripe: bool = Field(False, description="Whether the fruit is ripe")
class FruitCreate(FruitBase): class FruitCreate(FruitBase):
pass pass
@ -20,6 +21,7 @@ class FruitUpdate(BaseModel):
description: Optional[str] = Field(None, description="Fruit description") description: Optional[str] = Field(None, description="Fruit description")
color: Optional[str] = Field(None, max_length=50, description="Fruit color") color: Optional[str] = Field(None, max_length=50, description="Fruit color")
is_active: Optional[bool] = Field(None, description="Whether the fruit is active") is_active: Optional[bool] = Field(None, description="Whether the fruit is active")
is_ripe: Optional[bool] = Field(None, description="Whether the fruit is ripe")
class FruitSchema(FruitBase): class FruitSchema(FruitBase):
id: UUID id: UUID
@ -35,6 +37,7 @@ class FruitSchema(FruitBase):
"description": "A sweet, edible fruit produced by an apple tree", "description": "A sweet, edible fruit produced by an apple tree",
"color": "Red", "color": "Red",
"is_active": True, "is_active": True,
"is_ripe": False,
"created_at": "2023-01-01T12:00:00", "created_at": "2023-01-01T12:00:00",
"updated_at": "2023-01-01T12:00:00" "updated_at": "2023-01-01T12:00:00"
} }