from datetime import datetime
from pydantic import BaseModel, Field


# ─── 请求 DTO ──────────────────────────────────────────────

class RegisterRequest(BaseModel):
    username: str = Field(..., min_length=3, max_length=32, description="用户名")
    password: str = Field(..., min_length=6, max_length=128, description="密码")
    nickname: str = Field(..., min_length=1, max_length=32, description="昵称")


class LoginRequest(BaseModel):
    username: str = Field(..., min_length=1, description="用户名")
    password: str = Field(..., min_length=1, description="密码")


# ─── 响应 DTO ──────────────────────────────────────────────

class UserProfile(BaseModel):
    id: str
    username: str
    nickname: str
    created_at: datetime

    model_config = {"from_attributes": True}


class AuthResponse(BaseModel):
    token: str
    user: UserProfile


class ApiResponse(BaseModel):
    code: int = 0
    message: str = "success"
    data: dict | list | None = None
