Skip to content

Commit 3cb9a57

Browse files
committed
Update tree data return type hints
1 parent a0f9b4b commit 3cb9a57

File tree

6 files changed

+23
-11
lines changed

6 files changed

+23
-11
lines changed

backend/app/admin/api/v1/sys/dept.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,8 @@
66

77
from backend.app.admin.schema.dept import CreateDeptParam, GetDeptDetail, UpdateDeptParam
88
from backend.app.admin.service.dept_service import dept_service
9-
from backend.common.pagination import PageData
109
from backend.common.response.response_schema import ResponseModel, ResponseSchemaModel, response_base
10+
from backend.common.schema import CustomTreeData
1111
from backend.common.security.jwt import DependsJwtAuth
1212
from backend.common.security.permission import RequestPermission
1313
from backend.common.security.rbac import DependsRBAC
@@ -29,7 +29,7 @@ async def get_all_depts_tree(
2929
leader: Annotated[str | None, Query()] = None,
3030
phone: Annotated[str | None, Query()] = None,
3131
status: Annotated[int | None, Query()] = None,
32-
) -> ResponseSchemaModel[PageData[GetDeptDetail]]:
32+
) -> ResponseSchemaModel[CustomTreeData]:
3333
dept = await dept_service.get_dept_tree(name=name, leader=leader, phone=phone, status=status)
3434
return response_base.success(data=dept)
3535

backend/app/admin/api/v1/sys/menu.py

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,13 @@
11
#!/usr/bin/env python3
22
# -*- coding: utf-8 -*-
3-
from typing import Annotated, Any
3+
from typing import Annotated
44

55
from fastapi import APIRouter, Depends, Path, Query, Request
66

77
from backend.app.admin.schema.menu import CreateMenuParam, GetMenuDetail, UpdateMenuParam
88
from backend.app.admin.service.menu_service import menu_service
99
from backend.common.response.response_schema import ResponseModel, ResponseSchemaModel, response_base
10+
from backend.common.schema import CustomTreeData
1011
from backend.common.security.jwt import DependsJwtAuth
1112
from backend.common.security.permission import RequestPermission
1213
from backend.common.security.rbac import DependsRBAC
@@ -16,7 +17,7 @@
1617

1718

1819
@router.get('/sidebar', summary='获取用户菜单展示树', dependencies=[DependsJwtAuth])
19-
async def get_user_sidebar_tree(request: Request) -> ResponseSchemaModel[list[dict[str, Any]]]:
20+
async def get_user_sidebar_tree(request: Request) -> ResponseSchemaModel[CustomTreeData]:
2021
menu = await menu_service.get_user_menu_tree(request=request)
2122
return response_base.success(data=menu)
2223

@@ -31,7 +32,7 @@ async def get_menu(pk: Annotated[int, Path(...)]) -> ResponseSchemaModel[GetMenu
3132
@router.get('', summary='获取所有菜单展示树', dependencies=[DependsJwtAuth])
3233
async def get_all_menus(
3334
title: Annotated[str | None, Query()] = None, status: Annotated[int | None, Query()] = None
34-
) -> ResponseSchemaModel[list[dict[str, Any]]]:
35+
) -> ResponseSchemaModel[CustomTreeData]:
3536
menu = await menu_service.get_menu_tree(title=title, status=status)
3637
return response_base.success(data=menu)
3738

backend/app/admin/api/v1/sys/role.py

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
#!/usr/bin/env python3
22
# -*- coding: utf-8 -*-
3-
from typing import Annotated, Any
3+
from typing import Annotated
44

55
from fastapi import APIRouter, Depends, Path, Query, Request
66

@@ -16,6 +16,7 @@
1616
from backend.app.admin.service.role_service import role_service
1717
from backend.common.pagination import DependsPagination, PageData, paging_data
1818
from backend.common.response.response_schema import ResponseModel, ResponseSchemaModel, response_base
19+
from backend.common.schema import CustomTreeData
1920
from backend.common.security.jwt import DependsJwtAuth
2021
from backend.common.security.permission import RequestPermission
2122
from backend.common.security.rbac import DependsRBAC
@@ -40,7 +41,7 @@ async def get_user_all_roles(pk: Annotated[int, Path(...)]) -> ResponseSchemaMod
4041

4142

4243
@router.get('/{pk}/menus', summary='获取角色所有菜单', dependencies=[DependsJwtAuth])
43-
async def get_role_all_menus(pk: Annotated[int, Path(...)]) -> ResponseSchemaModel[list[dict[str, Any]]]:
44+
async def get_role_all_menus(pk: Annotated[int, Path(...)]) -> ResponseSchemaModel[CustomTreeData]:
4445
menu = await menu_service.get_role_menu_tree(pk=pk)
4546
return response_base.success(data=menu)
4647

backend/app/generator/api/v1/gen_business.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ async def get_business(pk: Annotated[int, Path(...)]) -> ResponseModel:
3535

3636

3737
@router.get('/{pk}/models', summary='获取代码生成业务所有模型', dependencies=[DependsJwtAuth])
38-
async def get_business_models(pk: Annotated[int, Path(...)]) -> ResponseModel:
38+
async def get_business_all_models(pk: Annotated[int, Path(...)]) -> ResponseModel:
3939
models = await gen_model_service.get_by_business(business_id=pk)
4040
data = select_list_serialize(models)
4141
return response_base.success(data=data)

backend/common/schema.py

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
#!/usr/bin/env python3
22
# -*- coding: utf-8 -*-
3-
from pydantic import BaseModel, ConfigDict, EmailStr, validate_email
3+
from typing import Any
4+
5+
from pydantic import BaseModel, ConfigDict, EmailStr, Field, validate_email
46
from pydantic_extra_types.phone_numbers import PhoneNumber
57

68
# 自定义验证错误信息不包含验证预期内容(也就是输入内容),受支持的预期内容字段参考以下链接
@@ -148,5 +150,13 @@ def _validate(cls, __input_value: str) -> str:
148150
return None if __input_value == '' else validate_email(__input_value)[1]
149151

150152

153+
class CustomTreeData(BaseModel):
154+
"""由于树形数据无法固定其数据结构,可使用此类型做为文档说明"""
155+
156+
tree_data: list[dict[str, Any]] = Field(
157+
description='此参数并不是实际参数,仅表示此接口返回为树形数据,具体数据结构请以接口返回内容为准'
158+
)
159+
160+
151161
class SchemaBase(BaseModel):
152162
model_config = ConfigDict(use_enum_values=True)

backend/utils/serializers.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ def select_columns_serialize(row: R) -> dict:
3030
return result
3131

3232

33-
def select_list_serialize(row: Sequence[R]) -> list:
33+
def select_list_serialize(row: Sequence[R]) -> list[dict[str, Any]]:
3434
"""
3535
Serialize SQLAlchemy select list
3636
@@ -59,7 +59,7 @@ def select_as_dict(row: R, use_alias: bool = False) -> dict:
5959
del result['_sa_instance_state']
6060
else:
6161
result = {}
62-
mapper = class_mapper(row.__class__)
62+
mapper = class_mapper(row.__class__) # type: ignore
6363
for prop in mapper.iterate_properties:
6464
if isinstance(prop, (ColumnProperty, SynonymProperty)):
6565
key = prop.key

0 commit comments

Comments
 (0)