30 lines
1.1 KiB
Python
30 lines
1.1 KiB
Python
from fastapi import APIRouter, Depends, Query, status
|
|
from typing import List, Optional
|
|
from sqlalchemy.orm import Session
|
|
from core.database import get_db
|
|
from schemas.fruit import FruitSchema
|
|
from helpers.fruit_helpers import get_all_fruits
|
|
|
|
router = APIRouter()
|
|
|
|
@router.get("/fruits", response_model=List[FruitSchema], status_code=status.HTTP_200_OK)
|
|
async def get_fruits(
|
|
skip: int = Query(0, ge=0, description="Number of records to skip"),
|
|
limit: int = Query(100, ge=1, le=100, description="Maximum number of records to return"),
|
|
sort_by: Optional[str] = Query(None, description="Field to sort by (name, color, etc.)"),
|
|
sort_order: str = Query("asc", description="Sort direction ('asc' or 'desc')"),
|
|
filter_seasonal: Optional[bool] = Query(None, description="Filter by seasonal status"),
|
|
db: Session = Depends(get_db)
|
|
):
|
|
"""
|
|
Get all fruits with optional filtering, sorting, and pagination.
|
|
"""
|
|
fruits = get_all_fruits(
|
|
db=db,
|
|
skip=skip,
|
|
limit=limit,
|
|
sort_by=sort_by,
|
|
sort_order=sort_order,
|
|
filter_seasonal=filter_seasonal
|
|
)
|
|
return fruits |