import fs from 'fs'; import path from 'path'; import { createPostgresMcp, EnvironmentConfig } from '../src/core/index.js'; interface ConfigFile { environments: EnvironmentConfig[]; } const usage = () => { console.error( 'Usage: npx ts-node scripts/test-connection.ts [schema] [tableName]', ); console.error( 'Example: npx ts-node scripts/test-connection.ts config/postgres.local.json shcis_drworks_cpoe_pg dbo appsettings', ); }; const main = async (): Promise => { const [, , configPathArg, envName, schema, tableName] = process.argv; if (!configPathArg || !envName) { usage(); process.exit(1); } const configPath = path.resolve(process.cwd(), configPathArg); const raw = fs.readFileSync(configPath, 'utf8'); const parsed = JSON.parse(raw) as ConfigFile; const envs = parsed.environments ?? []; const pg = createPostgresMcp(envs); try { console.log(`Connecting to env "${envName}" using ${configPath} ...`); const searchPath = await pg.metadata.describeSearchPath(envName, schema); console.log('Current search_path:', searchPath); // Replace with an existing table in your schema to validate data access const testTable = tableName ?? 'pg_tables'; const result = await pg.queries.execute( envName, `SELECT * FROM ${testTable} LIMIT 5`, [], schema ? { schema } : undefined, ); console.log(`Query ok, ${result.rowCount} rows:`); console.log(result.rows); } finally { await pg.connections.closeAll(); } }; main().catch((error) => { console.error('Test failed:', error.message); process.exit(1); });