Optimize routes to better align with RESTful (#673)

* Optimize routes to better align with RESTful

* Add codes endpoint description

* Update jinja templates

* fix typo

* fix sql
This commit is contained in:
Wu Clan
2025-06-19 11:06:34 +08:00
committed by GitHub
parent 0d1f05d307
commit 319ba13df1
74 changed files with 626 additions and 642 deletions

View File

@@ -9,6 +9,6 @@ from backend.plugin.code_generator.api.v1.gen import router as gen_router
v1 = APIRouter(prefix=f'{settings.FASTAPI_API_V1_PATH}/gen', tags=['代码生成'])
v1.include_router(gen_router, prefix='/tables')
v1.include_router(business_router, prefix='/businesses')
v1.include_router(model_router, prefix='/models')
v1.include_router(gen_router, prefix='/codes')

View File

@@ -20,12 +20,6 @@ from backend.plugin.code_generator.service.column_service import gen_model_servi
router = APIRouter()
@router.get('/all', summary='获取所有代码生成业务', dependencies=[DependsJwtAuth])
async def get_all_businesses() -> ResponseSchemaModel[list[GetGenBusinessDetail]]:
data = await gen_business_service.get_all()
return response_base.success(data=data)
@router.get('/{pk}', summary='获取代码生成业务详情', dependencies=[DependsJwtAuth])
async def get_business(
pk: Annotated[int, Path(description='业务 ID')],
@@ -34,11 +28,17 @@ async def get_business(
return response_base.success(data=data)
@router.get('', summary='获取所有代码生成业务', dependencies=[DependsJwtAuth])
async def get_all_businesses() -> ResponseSchemaModel[list[GetGenBusinessDetail]]:
data = await gen_business_service.get_all()
return response_base.success(data=data)
@router.get('/{pk}/models', summary='获取代码生成业务所有模型', dependencies=[DependsJwtAuth])
async def get_business_all_models(
pk: Annotated[int, Path(description='业务 ID')],
) -> ResponseSchemaModel[list[GetGenModelDetail]]:
data = await gen_model_service.get_by_business(business_id=pk)
data = await gen_model_service.get_models(business_id=pk)
return response_base.success(data=data)
@@ -47,7 +47,7 @@ async def get_business_all_models(
summary='创建代码生成业务',
deprecated=True,
dependencies=[
Depends(RequestPermission('gen:code:business:add')),
Depends(RequestPermission('codegen:business:add')),
DependsRBAC,
],
)
@@ -60,7 +60,7 @@ async def create_business(obj: CreateGenBusinessParam) -> ResponseModel:
'/{pk}',
summary='更新代码生成业务',
dependencies=[
Depends(RequestPermission('gen:code:business:edit')),
Depends(RequestPermission('codegen:business:edit')),
DependsRBAC,
],
)
@@ -77,7 +77,7 @@ async def update_business(
'/{pk}',
summary='删除代码生成业务',
dependencies=[
Depends(RequestPermission('gen:code:business:del')),
Depends(RequestPermission('codegen:business:del')),
DependsRBAC,
],
)

View File

@@ -30,7 +30,7 @@ async def get_model(pk: Annotated[int, Path(description='模型 ID')]) -> Respon
'',
summary='创建代码生成模型',
dependencies=[
Depends(RequestPermission('gen:code:model:add')),
Depends(RequestPermission('codegen:model:add')),
DependsRBAC,
],
)
@@ -43,7 +43,7 @@ async def create_model(obj: CreateGenModelParam) -> ResponseModel:
'/{pk}',
summary='更新代码生成模型',
dependencies=[
Depends(RequestPermission('gen:code:model:edit')),
Depends(RequestPermission('codegen:model:edit')),
DependsRBAC,
],
)
@@ -58,7 +58,7 @@ async def update_model(pk: Annotated[int, Path(description='模型 ID')], obj: U
'/{pk}',
summary='删除代码生成模型',
dependencies=[
Depends(RequestPermission('gen:code:model:del')),
Depends(RequestPermission('codegen:model:del')),
DependsRBAC,
],
)

View File

@@ -16,7 +16,7 @@ from backend.plugin.code_generator.service.gen_service import gen_service
router = APIRouter()
@router.get('', summary='获取数据库表')
@router.get('/tables', summary='获取数据库表')
async def get_all_tables(
table_schema: Annotated[str, Query(description='数据库名')] = 'fba',
) -> ResponseSchemaModel[list[str]]:
@@ -25,10 +25,10 @@ async def get_all_tables(
@router.post(
'/import',
'/imports',
summary='导入代码生成业务和模型列',
dependencies=[
Depends(RequestPermission('gen:code:import')),
Depends(RequestPermission('codegen:table:import')),
DependsRBAC,
],
)
@@ -37,24 +37,24 @@ async def import_table(obj: ImportParam) -> ResponseModel:
return response_base.success()
@router.get('/{pk}/preview', summary='生成代码预览', dependencies=[DependsJwtAuth])
@router.get('/{pk}/previews', summary='代码生成预览', dependencies=[DependsJwtAuth])
async def preview_code(pk: Annotated[int, Path(description='业务 ID')]) -> ResponseSchemaModel[dict[str, bytes]]:
data = await gen_service.preview(pk=pk)
return response_base.success(data=data)
@router.get('/{pk}/code/path', summary='获取代码生成路径', dependencies=[DependsJwtAuth])
async def generate_path(pk: Annotated[int, Path(description='业务 ID')]) -> ResponseSchemaModel[list[str]]:
@router.get('/{pk}/paths', summary='获取代码生成路径', dependencies=[DependsJwtAuth])
async def get_generate_paths(pk: Annotated[int, Path(description='业务 ID')]) -> ResponseSchemaModel[list[str]]:
data = await gen_service.get_generate_path(pk=pk)
return response_base.success(data=data)
@router.post(
'/{pk}/code',
'/{pk}/generation',
summary='代码生成',
description='文件磁盘写入,请谨慎操作',
dependencies=[
Depends(RequestPermission('gen:code:write')),
Depends(RequestPermission('codegen:local:write')),
DependsRBAC,
],
)