44SQL执行API
55"""
66from typing import Any , Dict , List
7-
8- from fastapi import APIRouter , Body
9- from fastapi .responses import JSONResponse
10-
11- from backend .common .response .response_schema import response_base
7+ from fastapi import APIRouter
8+ from backend .common .response .response_schema import response_base , ResponseModel , ResponseSchemaModel
129from backend .plugin .api_testing .utils .sql_executor import SQLExecutor , SQLQuery
1310
1411router = APIRouter ()
1512
1613
1714@router .post ("/execute" , response_model = Dict [str , Any ], summary = "执行SQL查询" )
18- async def execute_sql_query (query : SQLQuery ) -> JSONResponse :
15+ async def execute_sql_query (query : SQLQuery ) -> ResponseModel :
1916 """
2017 执行SQL查询接口
2118
@@ -24,35 +21,51 @@ async def execute_sql_query(query: SQLQuery) -> JSONResponse:
2421 try :
2522 # 执行SQL查询
2623 result = await SQLExecutor .execute_query (query )
27-
28- return response_base . success ( data = result . model_dump () )
24+ response = response_base . success ( data = result . model_dump ())
25+ return response . model_dump ()
2926 except Exception as e :
30- return response_base .fail (msg = f"SQL执行失败: { str (e )} " )
27+ response = response_base .fail (data = f"SQL执行失败: { str (e )} " )
28+ return response .model_dump ()
3129
3230
3331@router .post ("/batch-execute" , response_model = Dict [str , Any ], summary = "批量执行SQL查询" )
34- async def execute_batch_sql_queries (queries : List [SQLQuery ]) -> JSONResponse :
32+ async def execute_batch_sql_queries (queries : List [SQLQuery ]) -> Dict [ str , Any ] :
3533 """
3634 批量执行SQL查询接口
37-
35+
3836 批量执行指定的SQL查询并返回结果列表
3937 """
4038 try :
4139 results = []
4240 for query in queries :
43- result = await SQLExecutor .execute_query (query )
44- results .append (result .model_dump ())
45-
41+ try :
42+ result = await SQLExecutor .execute_query (query )
43+ response = response_base .success (data = result .model_dump ())
44+ results .append (response .model_dump ())
45+ except Exception as query_error :
46+ # 单个查询失败时,记录错误但继续执行其他查询
47+ error_response = response_base .fail (data = f"查询执行失败: { str (query_error )} " )
48+ results .append (error_response .model_dump ())
4649 # 构建响应
4750 data = {
4851 "results" : results ,
4952 "summary" : {
5053 "total" : len (results ),
51- "success" : sum (1 for result in results if result [ "success" ] ),
52- "failed" : sum (1 for result in results if not result [ "success" ] )
54+ "success" : sum (1 for result in results if result . get ( "success" , False ) ),
55+ "failed" : sum (1 for result in results if not result . get ( "success" , True ) )
5356 }
5457 }
55-
56- return response_base .success (data = data )
58+
59+ return {
60+ "code" : 200 ,
61+ "msg" : "批量执行完成" ,
62+ "data" : data ,
63+ "success" : True
64+ }
5765 except Exception as e :
58- return response_base .fail (msg = f"批量SQL执行失败: { str (e )} " )
66+ return {
67+ "code" : 400 ,
68+ "msg" : "请求错误" ,
69+ "data" : f"批量SQL执行失败: { str (e )} " ,
70+ "success" : False
71+ }
0 commit comments