MCPcopy Create free account
hub / github.com/dataease/SQLBot / add_model_ws_mapping_by_id

Function add_model_ws_mapping_by_id

backend/apps/system/api/aimodel.py:271–311  ·  view source on GitHub ↗
(
        session: SessionDep,
        id: int = Path(description="ID"),
        ws_ids: List[str] = Body(description="workspace id list"),
)

Source from the content-addressed store, hash-verified

269 description=f"{PLACEHOLDER_PREFIX}system_model_ws_mapping_add")
270@require_permissions(permission=SqlbotPermission(role=['admin']))
271async def add_model_ws_mapping_by_id(
272 session: SessionDep,
273 id: int = Path(description="ID"),
274 ws_ids: List[str] = Body(description="workspace id list"),
275):
276 if ws_ids is None:
277 ws_ids = []
278 ws_ids = list({int(ws_id) for ws_id in ws_ids})
279
280 db_model = session.get(AiModelDetail, id)
281 if not db_model:
282 raise ValueError(f"AiModelDetail with id {id} not found")
283
284 # 查询已存在的映射,过滤掉重复的
285 existing_stmt = (
286 select(AiModelWorkspaceMapping.workspace_id)
287 .where(
288 AiModelWorkspaceMapping.ai_model_id == id,
289 AiModelWorkspaceMapping.workspace_id.in_(ws_ids),
290 )
291 )
292 existing_ws_ids = set(session.exec(existing_stmt).all())
293
294 # 只插入不存在的映射
295 new_ws_ids = [ws_id for ws_id in ws_ids if ws_id not in existing_ws_ids]
296 for ws_id in new_ws_ids:
297 session.add(
298 AiModelWorkspaceMapping(ai_model_id=id, workspace_id=ws_id)
299 )
300
301 session.commit()
302
303 # 返回完整的映射列表
304 all_stmt = (
305 select(AiModelWorkspaceMapping.workspace_id)
306 .where(AiModelWorkspaceMapping.ai_model_id == id)
307 .distinct()
308 )
309 all_ws_ids: List[int] = session.exec(all_stmt).all()
310
311 return [str(ws_id) for ws_id in all_ws_ids]
312
313
314# 删除指定映射

Callers

nothing calls this directly

Calls 6

listFunction · 0.85
setFunction · 0.85
getMethod · 0.65
addMethod · 0.65
execMethod · 0.45

Tested by

no test coverage detected