46 lines
1.1 KiB
Python
46 lines
1.1 KiB
Python
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 |