(
session: SessionDep,
id: int = Path(description="ID"),
ws_ids: List[str] = Body(description="workspace id list"),
)
| 233 | description=f"{PLACEHOLDER_PREFIX}system_model_ws_mapping_update") |
| 234 | @require_permissions(permission=SqlbotPermission(role=['admin'])) |
| 235 | async def update_model_ws_mapping_by_id( |
| 236 | session: SessionDep, |
| 237 | id: int = Path(description="ID"), |
| 238 | ws_ids: List[str] = Body(description="workspace id list"), |
| 239 | ): |
| 240 | if ws_ids is None: |
| 241 | ws_ids = [] |
| 242 | # 提前去重 |
| 243 | ws_ids = list({int(ws_id) for ws_id in ws_ids}) |
| 244 | |
| 245 | db_model = session.get(AiModelDetail, id) |
| 246 | if not db_model: |
| 247 | raise ValueError(f"AiModelDetail with id {id} not found") |
| 248 | |
| 249 | # 根据 ai_model_id 更新关联的 workspace_id 列表 |
| 250 | # 1. 批量删除旧映射 |
| 251 | session.execute( |
| 252 | delete(AiModelWorkspaceMapping) |
| 253 | .where(AiModelWorkspaceMapping.ai_model_id == id) |
| 254 | ) |
| 255 | |
| 256 | # 2. 插入去重后的映射关系 |
| 257 | for ws_id in ws_ids: |
| 258 | session.add( |
| 259 | AiModelWorkspaceMapping(ai_model_id=id, workspace_id=ws_id) |
| 260 | ) |
| 261 | |
| 262 | session.commit() |
| 263 | |
| 264 | return [str(ws_id) for ws_id in ws_ids] |
| 265 | |
| 266 | |
| 267 | # 新增映射(在已有基础上追加) |
nothing calls this directly
no test coverage detected