from datetime import datetime
from pydantic import BaseModel, Field


# ------------------------------
# 请求模型（前端传参校验）
# ------------------------------
class FaceCreateRequest(BaseModel):
    """创建人脸记录请求模型（无需ID，由数据库自增）"""
    name: str = Field(None, max_length=255, description="名称（可选，最长255字符）")


class FaceUpdateRequest(BaseModel):
    """更新人脸记录请求模型（不变）"""
    name: str = Field(None, max_length=255, description="名称")
    eigenvalue: str = Field(None, max_length=255, description="特征（文件处理后可更新）")


# ------------------------------
# 响应模型（后端返回数据）
# ------------------------------
class FaceResponse(BaseModel):
    """人脸记录响应模型（仍包含ID，由数据库生成后返回）"""
    id: int = Field(..., description="主键ID（数据库自增）")
    name: str = Field(None, description="名称")
    eigenvalue: str | None = Field(None, description="特征（可为空）")
    created_at: datetime = Field(..., description="记录创建时间")
    updated_at: datetime = Field(..., description="记录更新时间")

    model_config = {"from_attributes": True}
