"""User request and response schemas.""" from __future__ import annotations from datetime import datetime from pydantic import BaseModel, Field, field_validator class UserResponse(BaseModel): id: str username: str email: str | None = None created_at: datetime | None = None updated_at: datetime | None = None class CreateUserRequest(BaseModel): username: str = Field(min_length=1) email: str | None = None @field_validator("username") @classmethod def normalize_username(cls, value: str) -> str: normalized = value.strip() if not normalized: raise ValueError("username은 비어 있을 수 없습니다") return normalized @field_validator("email") @classmethod def normalize_email(cls, value: str | None) -> str | None: if value is None: return None normalized = value.strip() return normalized or None class UpdateUserRequest(BaseModel): username: str | None = Field(default=None, min_length=1) email: str | None = None @field_validator("username") @classmethod def normalize_username(cls, value: str | None) -> str | None: if value is None: return None normalized = value.strip() if not normalized: raise ValueError("username은 비어 있을 수 없습니다") return normalized @field_validator("email") @classmethod def normalize_email(cls, value: str | None) -> str | None: if value is None: return None normalized = value.strip() return normalized or None