DBHub

import { z } from "zod"; import { ConnectorManager } from '../connectors/manager.js'; import { createToolSuccessResponse, createToolErrorResponse } from '../utils/response-formatter.js'; // Schema for run_query tool export const runQuerySchema = { query: z.string().describe("SQL query to execute (SELECT only)") }; /** * run_query tool handler * Executes a SQL query and returns the results */ export async function runQueryToolHandler({ query }: { query: string }, _extra: any) { const connector = ConnectorManager.getCurrentConnector(); try { // Validate the query before execution const validationResult = connector.validateQuery(query); if (!validationResult.isValid) { return createToolErrorResponse( validationResult.message ?? "Unknown validation error", "VALIDATION_ERROR" ); } // Execute the query if validation passed const result = await connector.executeQuery(query); // Build response data const responseData = { rows: result.rows, count: result.rows.length }; return createToolSuccessResponse(responseData); } catch (error) { return createToolErrorResponse( (error as Error).message, "EXECUTION_ERROR" ); } }