mirror of
https://github.com/fastapiadmin/FastapiAdmin.git
synced 2026-09-20 20:39:55 +00:00
- 将 ApplicationQueryParams 改为 ApplicationQueryParam - 同步更新相关导入和函数参数类型注解 - 修改 PaginationQueryParams 为 PaginationQueryParam refactor(demo): 重命名查询参数类以统一命名风格 - 将 DemoQueryParams 改为 DemoQueryParam - 同步更新相关导入和函数参数类型注解 - 修改 PaginationQueryParams 为 PaginationQueryParam refactor(gencode): 优化代码生成模块的模型和服务层结构 - 统一模型名称后缀为 Schema,调整相关引用 - 规范 Pydantic schema 的命名和定义 - 删除无用的 Python DAO 模板文件 - 调整导入路径,统一使用 app 目录下的模块路径 - 改进服务层方法签名,添加返回类型注解 - 使用自定义异常 CustomException 替代旧异常 - 统一成功响应格式为 SuccessResponse - 优化代码生成服务中的数据库操作 DAO 调用参数传递 - 优化代码生成业务表和字段模型的字段定义,添加注释和默认值 - 优化生成代码路径处理逻辑和异常信息提示 - 整合分页查询参数定义,统一分页模型 - 修正多个服务方法的参数类型和返回类型 - 删除无用的导入和多余注释,提升代码整洁度
137 lines
4.0 KiB
Python
137 lines
4.0 KiB
Python
# -*- coding: utf-8 -*-
|
|
|
|
from typing import Any, Mapping, Optional
|
|
from fastapi import status
|
|
from fastapi.responses import JSONResponse, StreamingResponse, FileResponse
|
|
from starlette.background import BackgroundTask
|
|
from pydantic import Field, BaseModel
|
|
|
|
from app.common.constant import RET
|
|
|
|
class ResponseSchema(BaseModel):
|
|
"""响应模型"""
|
|
code: int = Field(default=RET.OK.code, description="业务状态码")
|
|
msg: str = Field(default=RET.OK.msg, description="响应消息")
|
|
data: Optional[Any] = Field(default=None, description="响应数据")
|
|
status_code: int = Field(default=status.HTTP_200_OK, description="HTTP状态码")
|
|
success: bool = Field(default=True, description='操作是否成功')
|
|
|
|
class SuccessResponse(JSONResponse):
|
|
"""成功响应类"""
|
|
|
|
def __init__(
|
|
self,
|
|
data: Optional[Any] = None,
|
|
msg: str = RET.OK.msg,
|
|
code: int = RET.OK.code,
|
|
status_code: int = status.HTTP_200_OK,
|
|
success: bool = True
|
|
) -> None:
|
|
"""
|
|
初始化成功响应类
|
|
|
|
:param data: 响应数据
|
|
:param msg: 响应消息
|
|
:param code: 业务状态码
|
|
:param status_code: HTTP状态码
|
|
"""
|
|
content = ResponseSchema(
|
|
code=code,
|
|
msg=msg,
|
|
data=data,
|
|
status_code=status_code,
|
|
success=success
|
|
).model_dump()
|
|
super().__init__(content=content, status_code=status_code)
|
|
|
|
|
|
class ErrorResponse(JSONResponse):
|
|
"""错误响应类"""
|
|
|
|
def __init__(
|
|
self,
|
|
data: Optional[Any] = None,
|
|
msg: str = RET.ERROR.msg,
|
|
code: int = RET.ERROR.code,
|
|
status_code: int = status.HTTP_400_BAD_REQUEST,
|
|
success: bool = False
|
|
) -> None:
|
|
"""
|
|
初始化错误响应类
|
|
|
|
:param data: 响应数据
|
|
:param msg: 响应消息
|
|
:param code: 业务状态码
|
|
:param status_code: HTTP状态码
|
|
"""
|
|
content = ResponseSchema(
|
|
code=code,
|
|
msg=msg,
|
|
data=data,
|
|
status_code=status_code,
|
|
success=success
|
|
).model_dump()
|
|
super().__init__(content=content, status_code=status_code)
|
|
|
|
|
|
class StreamResponse(StreamingResponse):
|
|
"""流式响应类"""
|
|
|
|
def __init__(
|
|
self,
|
|
data: Any = None,
|
|
status_code: int = status.HTTP_200_OK,
|
|
headers: Mapping[str, str] | None = None,
|
|
media_type: str | None = None,
|
|
background: BackgroundTask | None = None
|
|
) -> None:
|
|
"""
|
|
初始化流式响应类
|
|
|
|
:param data: 响应数据
|
|
:param msg: 响应消息
|
|
:param code: 业务状态码
|
|
:param status_code: HTTP状态码
|
|
"""
|
|
super().__init__(
|
|
content=data,
|
|
status_code=status_code,
|
|
media_type=media_type, # 文件类型
|
|
headers=headers, # 文件名
|
|
background=background # 文件大小
|
|
)
|
|
|
|
|
|
class UploadFileResponse(FileResponse):
|
|
"""
|
|
文件响应
|
|
"""
|
|
def __init__(
|
|
self,
|
|
file_path: str,
|
|
filename: str,
|
|
media_type: str = "application/octet-stream",
|
|
headers: Optional[Mapping[str, str]] = None,
|
|
background: Optional[BackgroundTask] = None,
|
|
status_code: int = 200
|
|
):
|
|
"""
|
|
初始化文件响应类
|
|
:param file_path: 文件路径
|
|
:param media_type: 文件类型
|
|
:param headers: 响应头
|
|
:param background: 后台任务
|
|
:param status_code: HTTP状态码
|
|
"""
|
|
super().__init__(
|
|
path=file_path,
|
|
status_code=status_code,
|
|
headers=headers,
|
|
media_type=media_type,
|
|
background=background,
|
|
filename=filename,
|
|
stat_result=None,
|
|
method=None,
|
|
content_disposition_type="attachment"
|
|
)
|