from datetime import datetime

from pydantic import BaseModel, Field


# ------------------------------
# 请求模型（前端传参校验）
# ------------------------------
class UserRegisterRequest(BaseModel):
    """用户注册请求模型"""
    username: str = Field(..., min_length=3, max_length=50, description="用户名（3-50字符）")
    password: str = Field(..., min_length=6, max_length=100, description="密码（6-100字符）")


class UserLoginRequest(BaseModel):
    """用户登录请求模型"""
    username: str = Field(..., description="用户名")
    password: str = Field(..., description="密码")


# ------------------------------
# 响应模型（后端返回用户数据）
# ------------------------------
class UserResponse(BaseModel):
    """用户信息响应模型（隐藏密码等敏感字段）"""
    id: int = Field(..., description="用户ID")
    username: str = Field(..., description="用户名")
    created_at: datetime = Field(..., description="创建时间")
    updated_at: datetime = Field(..., description="更新时间")

    # Pydantic V2 配置（支持从数据库查询结果转换）
    model_config = {"from_attributes": True}
