43 lines
1.3 KiB
Python
43 lines
1.3 KiB
Python
from typing import Optional
|
|
|
|
from pydantic import BaseModel, Field
|
|
|
|
from common.enums import ErrorType
|
|
|
|
|
|
class StructModel:
|
|
"""프로토콜/구조체 식별용 마커 클래스. (backend 와 동일 규약)"""
|
|
|
|
pass
|
|
|
|
|
|
class ErrorInfo(BaseModel, StructModel):
|
|
"""모든 응답에 공통으로 실리는 결과 정보. result.success / code / desc 로 내려간다."""
|
|
|
|
success: Optional[bool] = True
|
|
code: Optional[int] = ErrorType.SUCCESS.value
|
|
desc: Optional[str] = ErrorType.SUCCESS.name
|
|
|
|
def SetResult(self, enum: ErrorType):
|
|
if enum is not None:
|
|
self.success = ErrorType.SUCCESS.value == enum.value
|
|
self.code = enum.value
|
|
self.desc = enum.name
|
|
|
|
|
|
# ---- Protocol 규약 (backend/common/models/gmodel.py 와 동일) ----------------
|
|
# 모든 통신 패킷은 WebPacketProtocol 을 상속한다.
|
|
# 요청 : Req_xxx (WebPacketProtocol) / 응답 : Res_xxx (Res_WebPacketProtocol, 항상 result)
|
|
class WebPacketProtocol(BaseModel, StructModel):
|
|
pass
|
|
|
|
|
|
class Req_WebPacketProtocol(WebPacketProtocol):
|
|
pass
|
|
|
|
|
|
class Res_WebPacketProtocol(WebPacketProtocol):
|
|
# default_factory 로 인스턴스마다 새 ErrorInfo 를 생성한다 (mutable default 공유 방지).
|
|
result: ErrorInfo = Field(default_factory=ErrorInfo)
|
|
msg: Optional[str] = None
|