import uuid from datetime import datetime from typing import Optional from pydantic import ConfigDict from common.models.gmodel import Res_WebPacketProtocol, WebPacketProtocol class ItemProtocol(WebPacketProtocol): pass class Req_CreateItem(ItemProtocol): name: str = "" code: Optional[str] = None category: Optional[str] = None category_type: int = 1 image_url: Optional[str] = None model_name: Optional[str] = None spec: Optional[str] = None manufacturer: Optional[str] = None made_in: Optional[str] = None price: Optional[int] = None internet_lowest_price_yn: bool = False moq: Optional[str] = None lead_time: Optional[int] = None quantity_unit: Optional[str] = None delivery_type: Optional[int] = None vat_yn: Optional[bool] = None delivery_fee_yn: Optional[bool] = None class Req_UpdateItem(ItemProtocol): name: Optional[str] = None code: Optional[str] = None category: Optional[str] = None category_type: Optional[int] = None image_url: Optional[str] = None model_name: Optional[str] = None spec: Optional[str] = None manufacturer: Optional[str] = None made_in: Optional[str] = None price: Optional[int] = None internet_lowest_price_yn: Optional[bool] = None moq: Optional[str] = None lead_time: Optional[int] = None quantity_unit: Optional[str] = None delivery_type: Optional[int] = None vat_yn: Optional[bool] = None delivery_fee_yn: Optional[bool] = None class ItemData(WebPacketProtocol): model_config = ConfigDict(from_attributes=True) item_id: uuid.UUID company_id: uuid.UUID user_id: uuid.UUID name: str code: Optional[str] = None category: Optional[str] = None category_type: int = 1 image_url: Optional[str] = None model_name: Optional[str] = None spec: Optional[str] = None manufacturer: Optional[str] = None made_in: Optional[str] = None price: Optional[int] = None internet_lowest_price_yn: bool = False moq: Optional[str] = None lead_time: Optional[int] = None quantity_unit: Optional[str] = None delivery_type: Optional[int] = None vat_yn: Optional[bool] = None delivery_fee_yn: Optional[bool] = None created_at: Optional[datetime] = None updated_at: Optional[datetime] = None class Res_Item(Res_WebPacketProtocol): item: Optional[ItemData] = None class Res_ItemList(Res_WebPacketProtocol): items: list[ItemData] = [] total: int = 0 page: int = 0 size: int = 0 class Res_DeleteItem(Res_WebPacketProtocol): pass class Res_ExcelUpload(Res_WebPacketProtocol): received_filename: Optional[str] = None status: str = "" message: str = "" class Res_LowestPriceTrigger(Res_WebPacketProtocol): item_id: str = "" status: str = "" message: str = "" class Res_LowestPriceResult(Res_WebPacketProtocol): item_id: str = "" results: list = [] message: str = ""