import re from datetime import datetime from typing import List, Optional from pydantic import BaseModel, ConfigDict, EmailStr, Field, field_validator # Stock Models class StockBase(BaseModel): gtin: str = Field(..., min_length=1, description="GTIN is required") location: str = Field(..., min_length=1, description="Location is required") class StockCreate(StockBase): quantity: int = Field(ge=0, description="Quantity must be non-negative") class StockAdd(StockBase): quantity: int = Field(gt=0, description="Quantity to add must be positive") class StockUpdate(BaseModel): quantity: int = Field(ge=0, description="Quantity must be non-negative") class StockResponse(BaseModel): model_config = ConfigDict(from_attributes=True) id: int gtin: str location: str quantity: int created_at: datetime updated_at: datetime class StockLocationResponse(BaseModel): location: str quantity: int class StockSummaryResponse(BaseModel): gtin: str total_quantity: int locations: List[StockLocationResponse] product_title: Optional[str] = None