|
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107 |
- from flask import Response, request
- from flask_login import current_user, login_required
- from api.db.db_models import MCPServer
- from api.db.services.mcp_server_service import MCPServerService
- from api.db.services.user_service import TenantService
- from api.settings import RetCode
- from api.utils import get_uuid
- from api.utils.api_utils import get_data_error_result, get_json_result, server_error_response, validate_request
-
-
- @manager.route("/list", methods=["GET"]) # noqa: F821
- @login_required
- def get_list() -> Response:
- try:
- return get_json_result(data=MCPServerService.get_servers(current_user.id) or [])
- except Exception as e:
- return server_error_response(e)
-
-
- @manager.route("/get_multiple", methods=["POST"]) # noqa: F821
- @login_required
- @validate_request("id_list")
- def get_multiple() -> Response:
- req = request.json
-
- try:
- return get_json_result(data=MCPServerService.get_servers(current_user.id, id_list=req["id_list"]) or [])
- except Exception as e:
- return server_error_response(e)
-
-
- @manager.route("/get/<ms_id>", methods=["GET"]) # noqa: F821
- @login_required
- def get(ms_id: str) -> Response:
- try:
- mcp_server = MCPServerService.get_or_none(id=ms_id, tenant_id=current_user.id)
-
- if mcp_server is None:
- return get_json_result(code=RetCode.NOT_FOUND, data=None)
-
- return get_json_result(data=mcp_server.to_dict())
- except Exception as e:
- return server_error_response(e)
-
-
- @manager.route("/create", methods=["POST"]) # noqa: F821
- @login_required
- @validate_request("name", "url", "server_type")
- def create() -> Response:
- req = request.json
-
- try:
- req["id"] = get_uuid()
- req["tenant_id"] = current_user.id
-
- e, _ = TenantService.get_by_id(current_user.id)
-
- if not e:
- return get_data_error_result(message="Tenant not found.")
-
- if not req.get("headers"):
- req["headers"] = {}
-
- if not MCPServerService.insert(**req):
- return get_data_error_result()
-
- return get_json_result(data={"id": req["id"]})
- except Exception as e:
- return server_error_response(e)
-
-
- @manager.route("/update", methods=["POST"]) # noqa: F821
- @login_required
- @validate_request("id", "name", "url", "server_type")
- def update() -> Response:
- req = request.json
-
- if not req.get("headers"):
- req["headers"] = {}
-
- try:
- req["tenant_id"] = current_user.id
-
- if not MCPServerService.filter_update([MCPServer.id == req["id"], MCPServer.tenant_id == req["tenant_id"]], req):
- return get_data_error_result()
-
- return get_json_result(data={"id": req["id"]})
- except Exception as e:
- return server_error_response(e)
-
-
- @manager.route("/rm", methods=["POST"]) # noqa: F821
- @login_required
- @validate_request("id")
- def rm() -> Response:
- req = request.json
- ms_id = req["id"]
-
- try:
- req["tenant_id"] = current_user.id
-
- if not MCPServerService.filter_delete([MCPServer.id == ms_id, MCPServer.tenant_id == req["tenant_id"]]):
- return get_data_error_result()
-
- return get_json_result(data={"id": req["id"]})
- except Exception as e:
- return server_error_response(e)
|