"""Receipt schemas (integer IDs, SQLite-compatible)."""
from __future__ import annotations

from typing import Any, Dict, List, Optional

from pydantic import BaseModel, Field


class ReceiptResponse(BaseModel):
    id: int
    filename: str
    status: str
    error: Optional[str] = None
    metadata: Dict[str, Any] = {}
    created_at: str
    updated_at: str

    model_config = {"from_attributes": True}


class ApproveOCRRequest(BaseModel):
    """Approve staged OCR items for inventory population.

    item_indices: which items (by 0-based index) to approve.
                  Omit or pass null to approve all items.
    location:     pantry location for created inventory items.
    """
    item_indices: Optional[List[int]] = Field(
        default=None,
        description="0-based indices of items to approve. Null = approve all.",
    )
    location: str = Field(default="pantry")


class ApprovedInventoryItem(BaseModel):
    inventory_id: int
    product_name: str
    quantity: float
    location: str
    expiration_date: Optional[str] = None


class ApproveOCRResponse(BaseModel):
    receipt_id: int
    approved: int
    skipped: int
    inventory_items: List[ApprovedInventoryItem]
