Skip to content

Add Bulk Create Endpoint #8

@NicholasLe04

Description

@NicholasLe04

Implement Bulk Create Endpoint for Inventory Items

Overview

Add a new endpoint to support bulk creation of snacks in the inventory system. This will improve efficiency when adding multiple items and reduce the number of API calls needed.

Current State

  • Currently, snacks can only be created one at a time using POST /api/v1/inventory/snacks
  • Each creation requires a separate API call

Objectives

  1. Create new bulk creation endpoint
  2. Add validation for bulk requests
  3. Return results with processed items or error

Technical Details

New Endpoint

POST /api/v1/inventory/snacks/bulk

Request Schema

class BulkSnackCreate(BaseModel):
    items: list[SnackCreateSchema]

Response Schema

class BulkCreateResponse(BaseModel):
    success: bool
    items: Optional[list[Snack]] = None
    error: Optional[str] = None

Example Request

{
    "items": [
        {
            "sku": "CHIPS001",
            "quantity": 50
        },
        {
            "sku": "SODA002",
            "quantity": 100
        }
    ]
}

Example Success Response

{
    "success": true,
    "items": [
        {
            "sku": "CHIPS001",
            "quantity": 50
        },
        {
            "sku": "SODA002",
            "quantity": 100
        }
    ],
    "error": null
}

Example Error Response

{
    "success": false,
    "items": null,
    "error": "Error processing bulk request: Duplicate SKU found"
}

Implementation Tasks

1. Database Updates

  • Create bulk processing function in db.py

2. API Implementation

  • Create new router endpoint
  • Implement request validation
  • Add error handling
  • Add response formatting

Code Examples

Router Implementation

@router.post("/snacks/bulk", response_model=BulkCreateResponse)
async def create_snacks_bulk(request: BulkSnackCreate):
    try:
        # Pass all items to a single processing function
        # create_bulk_items() can be defined in db.py
        processed_items = create_bulk_items(request.items)
        
        return BulkCreateResponse(
            success=True,
            items=processed_items,
            error=None
        )
    except Exception as e:
        return BulkCreateResponse(
            success=False,
            items=None,
            error=f"Error processing bulk request: {str(e)}"
        )

Resources

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type
No fields configured for issues without a type.

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions