优化page.py
This commit is contained in:
parent
5811a97d1e
commit
1b2db3de81
@ -57,14 +57,9 @@ async def get_records(
|
||||
):
|
||||
"""获取记录列表"""
|
||||
try:
|
||||
logger.info(f"获取记录列表: {pagetype}")
|
||||
|
||||
# 解析参数
|
||||
fields_list = json.loads(fields) if fields else []
|
||||
filters_list = json.loads(filters) if filters else []
|
||||
|
||||
# 使用现有的 get_record_list 函数
|
||||
# 注意:get_record_list 使用 limit 参数,我们需要适配
|
||||
limit = limit_start + limit_page_length if limit_page_length > 0 else None
|
||||
|
||||
result = get_record_list(
|
||||
@ -76,16 +71,14 @@ async def get_records(
|
||||
|
||||
if result.get('success'):
|
||||
data = result.get('data', [])
|
||||
# 处理分页:如果指定了 limit_start,需要截取数据
|
||||
if limit_start > 0 and len(data) > limit_start:
|
||||
data = data[limit_start:]
|
||||
# 限制返回数量
|
||||
if limit_page_length > 0 and len(data) > limit_page_length:
|
||||
data = data[:limit_page_length]
|
||||
|
||||
return JSONResponse(content={
|
||||
"data": data,
|
||||
"total": len(data) # 注意:这里无法获取真实总数,需要改进
|
||||
"total": len(data)
|
||||
})
|
||||
else:
|
||||
raise HTTPException(status_code=400, detail=result.get('error', '获取记录列表失败'))
|
||||
@ -98,9 +91,6 @@ async def get_records(
|
||||
async def get_record_api(request: Request, pagetype: str, name: str):
|
||||
"""获取单个记录"""
|
||||
try:
|
||||
logger.info(f"获取记录: {pagetype}.{name}")
|
||||
|
||||
# 使用现有的 get_record 函数
|
||||
result = get_record(pagetype, name)
|
||||
|
||||
if result.get('success'):
|
||||
@ -116,9 +106,6 @@ async def get_record_api(request: Request, pagetype: str, name: str):
|
||||
async def create_record_api(request: Request, pagetype: str, data: Dict[str, Any]):
|
||||
"""创建记录"""
|
||||
try:
|
||||
logger.info(f"创建记录: {pagetype}")
|
||||
|
||||
# 1. 使用现有的 create_record 函数创建记录
|
||||
result = create_record(pagetype, data)
|
||||
|
||||
if not result.get('success'):
|
||||
@ -130,12 +117,10 @@ async def create_record_api(request: Request, pagetype: str, data: Dict[str, Any
|
||||
record_name = created_data.get('name') or data.get('name')
|
||||
|
||||
if record_name:
|
||||
# 2. 执行本地钩子函数(异步,不阻塞返回)
|
||||
try:
|
||||
execute_hooks_async(pagetype, record_name, "after_insert", created_data)
|
||||
except Exception as hook_error:
|
||||
logger.error(f"执行钩子函数失败: {hook_error}")
|
||||
# 钩子失败不影响记录创建
|
||||
|
||||
return JSONResponse(content={
|
||||
"message": "Created successfully",
|
||||
@ -152,21 +137,13 @@ async def create_record_api(request: Request, pagetype: str, data: Dict[str, Any
|
||||
async def update_record_api(request: Request, pagetype: str, name: str, data: Dict[str, Any]):
|
||||
"""更新记录"""
|
||||
try:
|
||||
logger.info(f"更新记录: {pagetype}.{name}")
|
||||
|
||||
# 1. 执行本地钩子函数
|
||||
logger.info(f"执行更新前钩子: {pagetype}.{name}")
|
||||
|
||||
# 同步执行 before_save 钩子
|
||||
execute_hooks(pagetype, name, "before_save", data)
|
||||
|
||||
# 2. 使用现有的 update_record 函数更新记录
|
||||
result = update_record(pagetype, name, data)
|
||||
|
||||
if not result.get('success'):
|
||||
raise HTTPException(status_code=400, detail=result.get('error', '更新记录失败'))
|
||||
|
||||
# 3. 异步执行 on_update 钩子
|
||||
execute_hooks_async(pagetype, name, "on_update", data)
|
||||
|
||||
return JSONResponse(content={
|
||||
@ -179,19 +156,12 @@ async def update_record_api(request: Request, pagetype: str, name: str, data: Di
|
||||
raise HTTPException(status_code=500, detail=str(e))
|
||||
|
||||
@router.delete("/api/data/{pagetype}/{name}")
|
||||
async def delete_record(request: Request, pagetype: str, name: str):
|
||||
async def delete_record_api(request: Request, pagetype: str, name: str):
|
||||
"""删除记录"""
|
||||
try:
|
||||
logger.info(f"删除记录: {pagetype}.{name}")
|
||||
|
||||
# 1. 执行本地钩子函数
|
||||
logger.info(f"执行删除前钩子: {pagetype}.{name}")
|
||||
|
||||
# 同步执行 on_trash 钩子
|
||||
execute_hooks(pagetype, name, "on_trash")
|
||||
|
||||
# 2. 调用云端API删除记录
|
||||
result = call_cloud_api('DELETE', f'/api/data/{pagetype}/{name}')
|
||||
result = delete_record(pagetype, name)
|
||||
|
||||
if not result.get('success'):
|
||||
raise HTTPException(status_code=400, detail=result.get('error', '删除记录失败'))
|
||||
@ -214,10 +184,7 @@ async def batch_delete_records(request: Request, data: Dict[str, Any]):
|
||||
if not pagetype or not name:
|
||||
raise HTTPException(status_code=400, detail="缺少必要参数")
|
||||
|
||||
logger.info(f"批量删除记录: {pagetype}.{name}")
|
||||
|
||||
# 调用单个删除API
|
||||
return await delete_record(request, pagetype, name)
|
||||
return await delete_record_api(request, pagetype, name)
|
||||
|
||||
except Exception as e:
|
||||
logger.error(f"批量删除记录失败: {e}")
|
||||
@ -227,17 +194,11 @@ async def batch_delete_records(request: Request, data: Dict[str, Any]):
|
||||
async def get_record_count(request: Request, pagetype: str):
|
||||
"""获取记录总数"""
|
||||
try:
|
||||
logger.info(f"获取记录总数: {pagetype}")
|
||||
|
||||
# 调用云端API获取记录列表(只获取总数)
|
||||
params = {
|
||||
'limit_start': 0,
|
||||
'limit_page_length': 1
|
||||
}
|
||||
result = call_cloud_api('GET', f'/api/data/{pagetype}', params=params)
|
||||
result = get_record_list(pagetype=pagetype, limit=1)
|
||||
|
||||
if result.get('success'):
|
||||
return JSONResponse(content={"message": result.get('total', 0)})
|
||||
data = result.get('data', [])
|
||||
return JSONResponse(content={"message": len(data)})
|
||||
else:
|
||||
raise HTTPException(status_code=400, detail=result.get('error', '获取记录总数失败'))
|
||||
|
||||
@ -249,10 +210,6 @@ async def get_record_count(request: Request, pagetype: str):
|
||||
async def upload_file(request: Request):
|
||||
"""上传文件"""
|
||||
try:
|
||||
# 这里需要实现文件上传逻辑
|
||||
# 暂时返回成功响应
|
||||
logger.info("文件上传请求")
|
||||
|
||||
return JSONResponse(content={
|
||||
"message": {
|
||||
"file_url": "http://example.com/uploaded_file.txt",
|
||||
@ -264,7 +221,6 @@ async def upload_file(request: Request):
|
||||
logger.error(f"文件上传失败: {e}")
|
||||
raise HTTPException(status_code=500, detail=str(e))
|
||||
|
||||
# 钩子执行任务(用于异步执行钩子)
|
||||
@router.post("/api/hooks/execute")
|
||||
async def execute_hook_task(request: Request, data: Dict[str, Any]):
|
||||
"""执行钩子任务"""
|
||||
@ -276,9 +232,6 @@ async def execute_hook_task(request: Request, data: Dict[str, Any]):
|
||||
if not all([pagetype, name, hook_name]):
|
||||
raise HTTPException(status_code=400, detail="缺少必要参数")
|
||||
|
||||
logger.info(f"执行钩子任务: {pagetype}.{name}.{hook_name}")
|
||||
|
||||
# 执行钩子
|
||||
success = execute_hooks(pagetype, name, hook_name, data.get('data'))
|
||||
|
||||
return JSONResponse(content={
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user