42 lines
1.5 KiB
Python
42 lines
1.5 KiB
Python
# marketplace.py - Keep URL validation, remove business constraints
|
|
from datetime import datetime
|
|
from typing import Optional
|
|
from pydantic import BaseModel, Field, field_validator
|
|
|
|
class MarketplaceImportRequest(BaseModel):
|
|
url: str = Field(..., description="URL to CSV file from marketplace")
|
|
marketplace: str = Field(default="Letzshop", description="Marketplace name")
|
|
shop_code: str = Field(..., description="Shop code to associate products with")
|
|
batch_size: Optional[int] = Field(1000, description="Processing batch size")
|
|
# Removed: gt=0, le=10000 constraints - let service handle
|
|
|
|
@field_validator("url")
|
|
@classmethod
|
|
def validate_url(cls, v):
|
|
# Keep URL format validation for security
|
|
if not v.startswith(("http://", "https://")):
|
|
raise ValueError("URL must start with http:// or https://")
|
|
return v
|
|
|
|
@field_validator("marketplace", "shop_code")
|
|
@classmethod
|
|
def validate_strings(cls, v):
|
|
return v.strip()
|
|
|
|
class MarketplaceImportJobResponse(BaseModel):
|
|
job_id: int
|
|
status: str
|
|
marketplace: str
|
|
shop_id: int
|
|
shop_code: Optional[str] = None
|
|
shop_name: str
|
|
message: Optional[str] = None
|
|
imported: Optional[int] = 0
|
|
updated: Optional[int] = 0
|
|
total_processed: Optional[int] = 0
|
|
error_count: Optional[int] = 0
|
|
error_message: Optional[str] = None
|
|
created_at: Optional[datetime] = None
|
|
started_at: Optional[datetime] = None
|
|
completed_at: Optional[datetime] = None
|