"""统一响应格式。""" from __future__ import annotations from dataclasses import dataclass from enum import Enum from typing import Any, Generic, TypeVar T = TypeVar("T") class StatusCodeEnum(Enum): """HTTP 状态码枚举。""" HTTP_200_OK = 200 HTTP_201_CREATED = 201 HTTP_400_BAD_REQUEST = 400 HTTP_401_UNAUTHORIZED = 401 HTTP_403_FORBIDDEN = 403 HTTP_404_NOT_FOUND = 404 HTTP_409_CONFLICT = 409 HTTP_422_UNPROCESSABLE_ENTITY = 422 HTTP_500_INTERNAL_SERVER_ERROR = 500 @dataclass class PaginationInfo: """分页信息。""" total: int page: int pageSize: int @dataclass class PageResult(Generic[T]): """分页结果。""" list: list[T] pagination: PaginationInfo @dataclass class Result(Generic[T]): """统一响应。""" code: int message: str data: T | None = None @classmethod def success(cls, data: T | None = None, message: str = "ok") -> "Result[T]": return cls(code=200, message=message, data=data) @classmethod def error(cls, status: StatusCodeEnum, message: str | None = None) -> "Result[None]": return cls(code=status.value, message=message or status.name, data=None)