from pydantic import BaseModel, field_validator from typing import Optional class CreateUserDTO(BaseModel): """회원 가입 DTO""" # 필수 id: str password: str # 선택 user_name: Optional[str] = None @field_validator("id") @classmethod def validate_id(cls, v): if not v or len(v.strip()) == 0: raise ValueError("ID는 필수입니다") if len(v) < 3 or len(v) > 50: raise ValueError("ID는 3-50자 사이여야 합니다") return v.strip() @field_validator("password") @classmethod def validate_password(cls, v): if not v or len(v) < 6: raise ValueError("비밀번호는 최소 6자 이상이어야 합니다") return v # 자동 형변환 방지 class Config: strict = True class CheckUserDTO(BaseModel): """로그인 확인 DTO""" # 필수 id: str password: str @field_validator("id", "password") @classmethod def validate_required(cls, v): if not v or len(v.strip()) == 0: raise ValueError("필수 항목입니다") return v.strip() # 자동 형변환 방지 class Config: strict = True class CreateUserIpsDTO(BaseModel): """사용자 IP 저장 DTO""" # 필수 user_uuid: str user_ip: str user_agent: str # 자동 형변환 방지 class Config: strict = True