38 lines
1.4 KiB
Python
38 lines
1.4 KiB
Python
# product.py - Keep basic format validation, remove business logic
|
|
import re
|
|
from datetime import datetime
|
|
from typing import List, Optional
|
|
from pydantic import BaseModel, ConfigDict, Field, field_validator
|
|
from models.schemas.marketplace_product import MarketplaceProductResponse
|
|
|
|
class ProductCreate(BaseModel):
|
|
marketplace_product_id: str = Field(..., description="MarketplaceProduct ID to add to vendor ")
|
|
product_id: Optional[str] = None
|
|
price: Optional[float] = None # Removed: ge=0 constraint
|
|
sale_price: Optional[float] = None # Removed: ge=0 constraint
|
|
currency: Optional[str] = None
|
|
availability: Optional[str] = None
|
|
condition: Optional[str] = None
|
|
is_featured: bool = Field(False, description="Featured product flag")
|
|
min_quantity: int = Field(1, description="Minimum order quantity")
|
|
max_quantity: Optional[int] = None # Removed: ge=1 constraint
|
|
# Service will validate price ranges and quantity logic
|
|
|
|
class ProductResponse(BaseModel):
|
|
model_config = ConfigDict(from_attributes=True)
|
|
id: int
|
|
vendor_id: int
|
|
marketplace_product: MarketplaceProductResponse
|
|
product_id: Optional[str]
|
|
price: Optional[float]
|
|
sale_price: Optional[float]
|
|
currency: Optional[str]
|
|
availability: Optional[str]
|
|
condition: Optional[str]
|
|
is_featured: bool
|
|
is_active: bool
|
|
min_quantity: int
|
|
max_quantity: Optional[int]
|
|
created_at: datetime
|
|
updated_at: datetime
|