mirror of
https://github.com/Kaelio/ktx.git
synced 2026-07-25 12:01:03 +02:00
* feat(connector): add Amazon Athena connector via Glue Data Catalog * fix(athena): address reviewer feedback * fix(athena): wire scope discovery, fix normalizeDriver, tighten types and tests * fix(athena): honor databases scope, wire sql-analysis dialect, harden config resolution - introspect() limits to the configured `databases` scope instead of scanning every Glue database in the account (docs promised this; connector ignored it) - add athena -> athena to sql-analysis SQLGLOT_DIALECTS so `ktx sql` and MCP read-only validation parse Athena SQL under the Trino grammar, not postgres - stringConfigValue coerces a resolved-empty `env:` reference to undefined so optional fields fall back to their defaults (workgroup 'primary', catalog 'AwsDataCatalog') instead of '' - drop trailing whitespace in dialect.test.ts * fix(athena): integrate with main's SQL/non-SQL dialect split and add dialect notes Rebase onto main, which introduced the KtxDialect (core) vs KtxSqlDialect (SQL-only) split for MongoDB: - KtxAthenaDialect implements KtxSqlDialect; the connector resolves it via getSqlDialectForDriver so SQL-generation methods stay in scope - add authored athena.md SQL notes for the sql_dialect_notes MCP tool, required now that athena resolves to the athena sqlglot dialect (dialect-notes coverage is derived from the warehouse-driver registry) --------- Co-authored-by: Andrey Avtomonov <andreybavt@gmail.com>
28 lines
877 B
TypeScript
28 lines
877 B
TypeScript
import type { KtxProjectConnectionConfig } from './context/project/config.js';
|
|
|
|
/** @internal Canonical SQL-warehouse driver ids; the dialect-notes coverage test derives its required coverage from this set. */
|
|
export const KTX_DATABASE_DRIVER_IDS = [
|
|
'sqlite',
|
|
'duckdb',
|
|
'postgres',
|
|
'mysql',
|
|
'clickhouse',
|
|
'sqlserver',
|
|
'bigquery',
|
|
'snowflake',
|
|
'athena',
|
|
] as const;
|
|
|
|
// mongodb is a database driver but has no SQL dialect, so it sits outside the
|
|
// dialect-notes coverage set above.
|
|
const databaseDriverIds = new Set<string>([...KTX_DATABASE_DRIVER_IDS, 'mongodb']);
|
|
|
|
export function normalizeConnectionDriver(connection: KtxProjectConnectionConfig): string {
|
|
return String(connection.driver ?? '')
|
|
.trim()
|
|
.toLowerCase();
|
|
}
|
|
|
|
export function isDatabaseDriver(driver: string): boolean {
|
|
return databaseDriverIds.has(driver.trim().toLowerCase());
|
|
}
|