"""Pydantic 请求/响应模型。""" import datetime as dt from typing import Optional from pydantic import BaseModel, Field class RegisterIn(BaseModel): username: str = Field(min_length=3, max_length=64) password: str = Field(min_length=6, max_length=128) class LoginIn(BaseModel): username: str password: str class TokenOut(BaseModel): access_token: str token_type: str = "bearer" username: str class ApiKeyCreateIn(BaseModel): name: str = Field(default="default", max_length=128) class ApiKeyOut(BaseModel): id: int name: str key_prefix: str created_at: dt.datetime last_used_at: Optional[dt.datetime] = None revoked: bool class Config: from_attributes = True class ApiKeyCreatedOut(ApiKeyOut): """仅创建时返回明文 key,只此一次。""" key: str class UserOut(BaseModel): id: int username: str class MeOut(BaseModel): user: UserOut message: str