import uuid from datetime import datetime from typing import Optional from pydantic import ConfigDict from common.models.gmodel import Res_PageProtocol, Res_WebPacketProtocol, WebPacketProtocol class SupplierProtocol(WebPacketProtocol): pass class Req_CreateSupplier(SupplierProtocol): name: str = "" code: Optional[str] = None manager_name: Optional[str] = None manager_email: Optional[str] = None manager_contact_number: Optional[str] = None total_revenue: Optional[int] = None # 총매출액(원) class Req_UpdateSupplier(SupplierProtocol): name: Optional[str] = None code: Optional[str] = None manager_name: Optional[str] = None manager_email: Optional[str] = None manager_contact_number: Optional[str] = None total_revenue: Optional[int] = None class SupplierData(WebPacketProtocol): model_config = ConfigDict(from_attributes=True) supplier_id: uuid.UUID company_id: uuid.UUID user_id: uuid.UUID creator_name: Optional[str] = None # 등록자(작성자) 이름. user_id→company.users.name 조인 name: str code: Optional[str] = None manager_name: Optional[str] = None manager_email: Optional[str] = None manager_contact_number: Optional[str] = None total_revenue: Optional[int] = None # 총매출액(원) created_at: Optional[datetime] = None updated_at: Optional[datetime] = None class Res_Supplier(Res_WebPacketProtocol): supplier: Optional[SupplierData] = None class Res_SupplierList(Res_PageProtocol): suppliers: list[SupplierData] = [] class Req_CheckCodes(SupplierProtocol): codes: list[str] = [] class Res_CheckCodes(Res_WebPacketProtocol): existing: list[str] = [] # codes 중 이미 DB(같은 회사)에 존재하는 코드들 class Res_DeleteSupplier(Res_WebPacketProtocol): pass