CoolBotDataSys/api/models/request.py

44 lines
2.6 KiB
Python
Raw Permalink Normal View History

"""API 请求模型"""
from pydantic import BaseModel, Field
from typing import Optional
from datetime import datetime
class CollectionCreate(BaseModel):
"""创建藏品请求"""
name: str = Field(..., description="藏品名称", min_length=1, max_length=255)
category: Optional[str] = Field(None, description="品类(龙钞/蛇钞/马钞等)")
serial_number: Optional[str] = Field(None, description="号码(唯一标识)", max_length=100)
rarity: str = Field("通货", description="珍惜度(通货/标十/标百/狮子号)")
ownership_type: str = Field("自持", description="持仓类型(自持/代存)")
is_graded: bool = Field(False, description="是否评级")
grading_company: Optional[str] = Field(None, description="评级公司PCGS/NGC/爱藏)")
grading_score: Optional[str] = Field(None, description="评级分数如68/69/70")
cost_price: Optional[float] = Field(None, description="成本价(元)")
current_price: Optional[float] = Field(None, description="当前市场价(元)")
status: str = Field("in_collection", description="状态in_collection/sold/lost")
remark: Optional[str] = Field(None, description="备注")
class CollectionUpdate(BaseModel):
"""更新藏品请求"""
name: Optional[str] = Field(None, description="藏品名称")
category: Optional[str] = Field(None, description="品类")
serial_number: Optional[str] = Field(None, description="号码")
rarity: Optional[str] = Field(None, description="珍惜度")
ownership_type: Optional[str] = Field(None, description="持仓类型")
is_graded: Optional[bool] = Field(None, description="是否评级")
grading_company: Optional[str] = Field(None, description="评级公司")
grading_score: Optional[str] = Field(None, description="评级分数")
cost_price: Optional[float] = Field(None, description="成本价")
current_price: Optional[float] = Field(None, description="当前市场价")
status: Optional[str] = Field(None, description="状态")
remark: Optional[str] = Field(None, description="备注")
class PriceQuery(BaseModel):
"""价格查询参数"""
collection_id: Optional[int] = Field(None, description="藏品ID")
source: Optional[str] = Field(None, description="数据来源yichens/aicang/douyin")
start_date: Optional[datetime] = Field(None, description="开始时间")
end_date: Optional[datetime] = Field(None, description="结束时间")
page: int = Field(1, ge=1, description="页码")
page_size: int = Field(20, ge=1, le=100, description="每页数量")