56 lines
1.9 KiB
Python
56 lines
1.9 KiB
Python
from pydantic import BaseModel, Field, HttpUrl
|
|
from typing import Optional, List
|
|
from datetime import datetime
|
|
from enum import Enum
|
|
from app.models.dress import GarmentType
|
|
|
|
class GarmentType(str, Enum):
|
|
TOP_GARMENT = "TOP_GARMENT"
|
|
BOTTOM_GARMENT = "BOTTOM_GARMENT"
|
|
|
|
class DressBase(BaseModel):
|
|
"""服装基础模型"""
|
|
name: str = Field(..., description="服装名称", example="夏季连衣裙")
|
|
image_url: Optional[str] = Field(None, description="服装图片URL", example="https://example.com/dress1.jpg")
|
|
garment_type: Optional[GarmentType] = Field(None, description="服装类型(上衣/下衣)", example="TOP_GARMENT")
|
|
description: Optional[str] = Field(None, description="服装描述", example="一款适合夏季穿着的轻薄连衣裙")
|
|
|
|
class DressCreate(DressBase):
|
|
"""创建服装的请求模型"""
|
|
pass
|
|
|
|
class DressUpdate(BaseModel):
|
|
"""更新服装的请求模型"""
|
|
name: Optional[str] = Field(None, description="服装名称", example="夏季连衣裙")
|
|
image_url: Optional[str] = Field(None, description="服装图片URL", example="https://example.com/dress1.jpg")
|
|
garment_type: Optional[GarmentType] = Field(None, description="服装类型(上衣/下衣)", example="TOP_GARMENT")
|
|
description: Optional[str] = Field(None, description="服装描述", example="一款适合夏季穿着的轻薄连衣裙")
|
|
|
|
class DressInDB(DressBase):
|
|
"""数据库中的服装模型"""
|
|
id: int
|
|
created_at: datetime
|
|
updated_at: datetime
|
|
|
|
class Config:
|
|
orm_mode = True
|
|
|
|
class DressResponse(DressInDB):
|
|
"""服装API响应模型"""
|
|
pass
|
|
|
|
class DressListResponse(BaseModel):
|
|
items: List[DressResponse]
|
|
total: int
|
|
page: int
|
|
size: int
|
|
|
|
class Config:
|
|
orm_mode = True
|
|
|
|
class StandardResponse(BaseModel):
|
|
"""标准API响应格式"""
|
|
success: bool = True
|
|
code: int = 200
|
|
message: str = "操作成功"
|
|
data: Optional[dict] = None |