11import logging
22from typing import Any , Dict , List
33
4- from sqlalchemy .exc import SQLAlchemyError
5-
6- from consts .exceptions import MCPDatabaseError
74from database .client import as_dict , filter_property , get_db_session
85from database .db_models import McpRecord
96
107logger = logging .getLogger ("remote_mcp_db" )
118
129
13- def create_mcp_record (mcp_data : Dict [str , Any ], tenant_id : str , user_id : str ) -> bool :
10+ def create_mcp_record (mcp_data : Dict [str , Any ], tenant_id : str , user_id : str ):
1411 """
15- Create a new MCP record
12+ Create new MCP record
1613
1714 :param mcp_data: Dictionary containing MCP information
1815 :param tenant_id: Tenant ID
1916 :param user_id: User ID
2017 :return: Created MCP record
2118 """
2219 with get_db_session () as session :
23- try :
24- # Add default values
25- mcp_data .update ({
26- "tenant_id" : tenant_id ,
27- "user_id" : user_id ,
28- "created_by" : user_id ,
29- "updated_by" : user_id ,
30- "delete_flag" : "N"
31- })
32-
33- new_mcp = McpRecord (** filter_property (mcp_data , McpRecord ))
34- session .add (new_mcp )
35- session .flush ()
36-
37- return True
38- except SQLAlchemyError :
39- session .rollback ()
40- return False
41-
42-
43- def delete_mcp_record_by_name_and_url (mcp_name : str , mcp_server : str , tenant_id : str , user_id : str ) -> bool :
20+ mcp_data .update ({
21+ "tenant_id" : tenant_id ,
22+ "user_id" : user_id ,
23+ "created_by" : user_id ,
24+ "updated_by" : user_id ,
25+ "delete_flag" : "N"
26+ })
27+ new_mcp = McpRecord (** filter_property (mcp_data , McpRecord ))
28+ session .add (new_mcp )
29+
30+
31+ def delete_mcp_record_by_name_and_url (mcp_name : str , mcp_server : str , tenant_id : str , user_id : str ):
4432 """
45- Delete a MCP record by name and URL
33+ Delete MCP record by name and URL
4634
4735 :param mcp_name: MCP name
4836 :param mcp_server: MCP server URL
4937 :param tenant_id: Tenant ID
5038 :param user_id: User ID
51- :return: True if successful, False otherwise
5239 """
5340 with get_db_session () as session :
54- try :
55- session .query (McpRecord ).filter (
56- McpRecord .mcp_name == mcp_name ,
57- McpRecord .mcp_server == mcp_server ,
58- McpRecord .tenant_id == tenant_id ,
59- McpRecord .delete_flag != 'Y'
60- ).update ({"delete_flag" : "Y" , "updated_by" : user_id })
61- session .commit ()
62- return True
63- except SQLAlchemyError :
64- session .rollback ()
65- return False
66-
67-
68- def update_mcp_status_by_name_and_url (mcp_name : str , mcp_server : str , tenant_id : str , user_id : str , status : bool ) -> bool :
41+ session .query (McpRecord ).filter (
42+ McpRecord .mcp_name == mcp_name ,
43+ McpRecord .mcp_server == mcp_server ,
44+ McpRecord .tenant_id == tenant_id ,
45+ McpRecord .delete_flag != 'Y'
46+ ).update ({"delete_flag" : "Y" , "updated_by" : user_id })
47+
48+
49+ def update_mcp_status_by_name_and_url (mcp_name : str , mcp_server : str , tenant_id : str , user_id : str , status : bool ):
6950 """
7051 Update the status of MCP record by name and URL
7152 :param mcp_name: MCP name
7253 :param mcp_server: MCP server URL
7354 :param tenant_id: Tenant ID
7455 :param status: New status (True/False)
7556 :param user_id: User ID
76- :return: True if successful, False otherwise
7757 """
7858 with get_db_session () as session :
79- try :
80- session .query (McpRecord ).filter (
81- McpRecord .mcp_name == mcp_name ,
82- McpRecord .mcp_server == mcp_server ,
83- McpRecord .tenant_id == tenant_id ,
84- McpRecord .delete_flag != 'Y'
85- ).update ({"status" : status , "updated_by" : user_id })
86- session .commit ()
87- return True
88- except SQLAlchemyError :
89- session .rollback ()
90- return False
59+ session .query (McpRecord ).filter (
60+ McpRecord .mcp_name == mcp_name ,
61+ McpRecord .mcp_server == mcp_server ,
62+ McpRecord .tenant_id == tenant_id ,
63+ McpRecord .delete_flag != 'Y'
64+ ).update ({"status" : status , "updated_by" : user_id })
9165
9266
9367def get_mcp_records_by_tenant (tenant_id : str ) -> List [Dict [str , Any ]]:
@@ -115,17 +89,13 @@ def get_mcp_server_by_name_and_tenant(mcp_name: str, tenant_id: str) -> str:
11589 :return: MCP server address, empty string if not found
11690 """
11791 with get_db_session () as session :
118- try :
119- mcp_record = session .query (McpRecord ).filter (
120- McpRecord .mcp_name == mcp_name ,
121- McpRecord .tenant_id == tenant_id ,
122- McpRecord .delete_flag != 'Y'
123- ).first ()
92+ mcp_record = session .query (McpRecord ).filter (
93+ McpRecord .mcp_name == mcp_name ,
94+ McpRecord .tenant_id == tenant_id ,
95+ McpRecord .delete_flag != 'Y'
96+ ).first ()
12497
125- return mcp_record .mcp_server if mcp_record else ""
126- except SQLAlchemyError as e :
127- logger .error (f"Error getting MCP server by name and tenant: { str (e )} " )
128- raise MCPDatabaseError ("Error getting MCP server by name and tenant" )
98+ return mcp_record .mcp_server if mcp_record else ""
12999
130100
131101def check_mcp_name_exists (mcp_name : str , tenant_id : str ) -> bool :
@@ -137,14 +107,9 @@ def check_mcp_name_exists(mcp_name: str, tenant_id: str) -> bool:
137107 :return: True if name exists, False otherwise
138108 """
139109 with get_db_session () as session :
140- try :
141- mcp_record = session .query (McpRecord ).filter (
142- McpRecord .mcp_name == mcp_name ,
143- McpRecord .tenant_id == tenant_id ,
144- McpRecord .delete_flag != 'Y'
145- ).first ()
146-
147- return mcp_record is not None
148- except SQLAlchemyError as e :
149- logger .error (f"Error checking if MCP name exists: { str (e )} " )
150- raise MCPDatabaseError ("Error checking if MCP name exists" )
110+ mcp_record = session .query (McpRecord ).filter (
111+ McpRecord .mcp_name == mcp_name ,
112+ McpRecord .tenant_id == tenant_id ,
113+ McpRecord .delete_flag != 'Y'
114+ ).first ()
115+ return mcp_record is not None
0 commit comments