shop product refactoring
This commit is contained in:
37
models/schemas/product.py
Normal file
37
models/schemas/product.py
Normal file
@@ -0,0 +1,37 @@
|
||||
# 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 shop")
|
||||
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
|
||||
shop_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
|
||||
@@ -3,7 +3,6 @@ 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 ShopCreate(BaseModel):
|
||||
shop_code: str = Field(..., description="Unique shop identifier")
|
||||
@@ -62,34 +61,3 @@ class ShopListResponse(BaseModel):
|
||||
total: int
|
||||
skip: int
|
||||
limit: int
|
||||
|
||||
class ShopProductCreate(BaseModel):
|
||||
marketplace_product_id: str = Field(..., description="MarketplaceProduct ID to add to shop")
|
||||
shop_product_id: Optional[str] = None
|
||||
shop_price: Optional[float] = None # Removed: ge=0 constraint
|
||||
shop_sale_price: Optional[float] = None # Removed: ge=0 constraint
|
||||
shop_currency: Optional[str] = None
|
||||
shop_availability: Optional[str] = None
|
||||
shop_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 ShopProductResponse(BaseModel):
|
||||
model_config = ConfigDict(from_attributes=True)
|
||||
id: int
|
||||
shop_id: int
|
||||
product: MarketplaceProductResponse
|
||||
shop_product_id: Optional[str]
|
||||
shop_price: Optional[float]
|
||||
shop_sale_price: Optional[float]
|
||||
shop_currency: Optional[str]
|
||||
shop_availability: Optional[str]
|
||||
shop_condition: Optional[str]
|
||||
is_featured: bool
|
||||
is_active: bool
|
||||
min_quantity: int
|
||||
max_quantity: Optional[int]
|
||||
created_at: datetime
|
||||
updated_at: datetime
|
||||
|
||||
Reference in New Issue
Block a user