refactor(app): address AI review suggestions on sharing endpoints

This commit is contained in:
wxy
2026-03-13 16:19:35 +08:00
parent c354618e20
commit aab54ca1a8
2 changed files with 22 additions and 10 deletions

View File

@@ -123,7 +123,7 @@ def unshare_all_apps_to_workspace(
target_workspace_id=target_workspace_id,
workspace_id=workspace_id
)
return success(msg=f"已取消 {count} 个应用的分享")
return success(msg=f"已取消 {count} 个应用的分享", data={"count": count})
@router.get("/{app_id}", summary="获取应用详情")
@@ -430,7 +430,7 @@ def remove_all_shared_apps_from_workspace(
source_workspace_id=source_workspace_id,
workspace_id=workspace_id
)
return success(msg=f"已移除 {count} 个共享应用")
return success(msg=f"已移除 {count} 个共享应用", data={"count": count})
@router.delete("/{app_id}/shared", summary="移除共享给我的应用")

View File

@@ -924,6 +924,10 @@ class AppService:
if search:
filters.append(func.lower(App.name).like(f"%{search.lower()}%"))
# shared_only implies include_shared; enforce to avoid confusing API usage
if shared_only:
include_shared = True
# 基础查询:本工作空间的应用
if shared_only:
# 只返回共享给本工作空间的应用,不含自有应用
@@ -1921,14 +1925,18 @@ class AppService:
extra={"target_workspace_id": str(target_workspace_id), "workspace_id": str(workspace_id)}
)
stmt = delete(AppShare).where(
# Query IDs first to get a reliable count, avoiding rowcount driver inconsistencies
id_stmt = select(AppShare.id).where(
AppShare.source_workspace_id == workspace_id,
AppShare.target_workspace_id == target_workspace_id
)
result = self.db.execute(stmt)
self.db.commit()
ids = list(self.db.scalars(id_stmt).all())
count = len(ids)
if ids:
self.db.execute(delete(AppShare).where(AppShare.id.in_(ids)))
self.db.commit()
count = result.rowcount
logger.info("已取消分享记录数", extra={"count": count})
return count
@@ -2039,14 +2047,18 @@ class AppService:
extra={"source_workspace_id": str(source_workspace_id), "workspace_id": str(workspace_id)}
)
stmt = delete(AppShare).where(
# Query IDs first to get a reliable count, avoiding rowcount driver inconsistencies
id_stmt = select(AppShare.id).where(
AppShare.source_workspace_id == source_workspace_id,
AppShare.target_workspace_id == workspace_id
)
result = self.db.execute(stmt)
self.db.commit()
ids = list(self.db.scalars(id_stmt).all())
count = len(ids)
if ids:
self.db.execute(delete(AppShare).where(AppShare.id.in_(ids)))
self.db.commit()
count = result.rowcount
logger.info("已移除共享记录数", extra={"count": count})
return count