|
1 | 1 | import re |
2 | 2 | import logging |
3 | | -from typing import Optional, Any, Dict, List |
| 3 | +from typing import Optional |
4 | 4 | from teradatasql import TeradataConnection |
5 | | -import json |
6 | | -from datetime import date, datetime |
7 | | -from decimal import Decimal |
8 | 5 | from sqlalchemy import text |
9 | | -from sqlalchemy.engine import Engine, Connection |
| 6 | +from sqlalchemy.engine import Connection |
10 | 7 | from sqlalchemy.engine import default |
11 | 8 | from teradata_mcp_server.tools.utils import serialize_teradata_types, rows_to_json, create_response |
12 | 9 |
|
13 | 10 | logger = logging.getLogger("teradata_mcp_server") |
14 | 11 |
|
15 | 12 | #------------------ Tool ------------------# |
| 13 | +# Read query tool |
16 | 14 | def handle_base_readQuery( |
17 | 15 | conn: Connection, |
18 | 16 | sql: str = None, |
@@ -71,12 +69,11 @@ def handle_base_readQuery( |
71 | 69 |
|
72 | 70 | return create_response(data, metadata) |
73 | 71 |
|
74 | | -#------------------ Tool ------------------# |
75 | | -# Write SQL execution tool |
76 | | -from teradata_mcp_server.tools.utils import serialize_teradata_types, rows_to_json, create_response |
77 | | -# table_name (str) - name of the table to get the definition for |
78 | | -# Returns: ResponseType - formatted response with ddl results or error message |
79 | 72 |
|
| 73 | + |
| 74 | + |
| 75 | +#------------------ Tool ------------------# |
| 76 | +# get DDL tool |
80 | 77 | def handle_base_tableDDL(conn: TeradataConnection, db_name: str, table_name: str, *args, **kwargs): |
81 | 78 | """ |
82 | 79 | Displays the DDL definition of a table via SQLAlchemy, bind parameters if provided (prepared SQL), and return the fully rendered SQL (with literals) in metadata. |
@@ -112,11 +109,6 @@ def handle_base_tableDDL(conn: TeradataConnection, db_name: str, table_name: str |
112 | 109 |
|
113 | 110 | #------------------ Tool ------------------# |
114 | 111 | # Read column description tool |
115 | | -# Arguments: |
116 | | -# conn (TeradataConnection) - Teradata connection object for executing SQL queries |
117 | | -# db_name (str) - name of the database to list objects from |
118 | | -# obj_name (str) - name of the object to list columns from |
119 | | -# Returns: formatted response with list of columns and data types or error message |
120 | 112 | def handle_base_columnDescription(conn: TeradataConnection, db_name: str, obj_name: str, *args, **kwargs): |
121 | 113 | """ |
122 | 114 | Shows detailed column information about a database table via SQLAlchemy, bind parameters if provided (prepared SQL), and return the fully rendered SQL (with literals) in metadata. |
@@ -197,11 +189,6 @@ def handle_base_columnDescription(conn: TeradataConnection, db_name: str, obj_na |
197 | 189 |
|
198 | 190 | #------------------ Tool ------------------# |
199 | 191 | # Read table preview tool |
200 | | -# Arguments: |
201 | | -# conn (TeradataConnection) - Teradata connection object for executing SQL queries |
202 | | -# db_name (str) - name of the database to list objects from |
203 | | -# table_name (str) - name of the table to list columns from |
204 | | -# Returns: formatted response string or error message |
205 | 192 | def handle_base_tablePreview(conn: TeradataConnection, table_name: str, db_name: Optional[str] = None, *args, **kwargs): |
206 | 193 | """ |
207 | 194 | This function returns data sample and inferred structure from a database table or view via SQLAlchemy, bind parameters if provided (prepared SQL), and return the fully rendered SQL (with literals) in metadata. |
@@ -240,11 +227,6 @@ def handle_base_tablePreview(conn: TeradataConnection, table_name: str, db_name: |
240 | 227 |
|
241 | 228 | #------------------ Tool ------------------# |
242 | 229 | # Read table affinity tool |
243 | | -# Arguments: |
244 | | -# conn (TeradataConnection) - Teradata connection object for executing SQL queries |
245 | | -# db_name (str) - name of the database to list objects from |
246 | | -# obj_name (str) - name of the object to list columns from |
247 | | -# Returns: formatted response with list of tables and their usage or error message |
248 | 230 | def handle_base_tableAffinity(conn: TeradataConnection, db_name: str, obj_name: str, *args, **kwargs): |
249 | 231 | """ |
250 | 232 | Get tables commonly used together by database users, this is helpful to infer relationships between tables via SQLAlchemy, bind parameters if provided (prepared SQL), and return the fully rendered SQL (with literals) in metadata. |
@@ -321,10 +303,6 @@ def handle_base_tableAffinity(conn: TeradataConnection, db_name: str, obj_name: |
321 | 303 |
|
322 | 304 | #------------------ Tool ------------------# |
323 | 305 | # Read table usage tool |
324 | | -# Arguments: |
325 | | -# conn (TeradataConnection) - Teradata connection object for executing SQL queries |
326 | | -# db_name (str) - name of the database to list objects from |
327 | | -# Returns: formatted response with list of tables and their usage or error message |
328 | 306 | def handle_base_tableUsage(conn: TeradataConnection, db_name: Optional[str] = None, *args, **kwargs): |
329 | 307 | """ |
330 | 308 | Measure the usage of a table and views by users in a given schema, this is helpful to infer what database objects are most actively used or drive most value via SQLAlchemy, bind parameters if provided (prepared SQL), and return the fully rendered SQL (with literals) in metadata. |
@@ -405,13 +383,6 @@ def handle_base_tableUsage(conn: TeradataConnection, db_name: Optional[str] = No |
405 | 383 |
|
406 | 384 | #------------------ Tool ------------------# |
407 | 385 | # Dynamic SQL execution tool |
408 | | -# This tool is used to execute dynamic SQL queries that are generated at runtime by a generator function. |
409 | | -# This is not intended to be directly exposed as a tool, but used to build other tools. |
410 | | -# Arguments: |
411 | | -# conn (TeradataConnection) - Teradata connection object for executing SQL queries |
412 | | -# sql_generator (callable) - a generator function that returns a SQL query string |
413 | | -# *args - additional positional arguments to pass to the generator function |
414 | | -# Returns: ResponseType - formatted response with query results or error message |
415 | 386 | def util_base_dynamicQuery(conn: TeradataConnection, sql_generator: callable, *args, **kwargs): |
416 | 387 | """ |
417 | 388 | This tool is used to execute dynamic SQL queries that are generated at runtime by a generator function. |
|
0 commit comments