mirror of
https://github.com/Kaelio/ktx.git
synced 2026-06-16 08:25:14 +02:00
refactor(historic-sql): route dialect support through driver registry
This commit is contained in:
parent
ad2471da74
commit
65cca7bd04
2 changed files with 37 additions and 4 deletions
|
|
@ -1,5 +1,9 @@
|
|||
import { getDriverRegistration } from '../../../connections/drivers.js';
|
||||
import type { KtxConnectionDriver } from '../../../scan/types.js';
|
||||
import type { HistoricSqlDialect } from './types.js';
|
||||
|
||||
const historicSqlDialects: readonly HistoricSqlDialect[] = ['postgres', 'bigquery', 'snowflake'];
|
||||
|
||||
function recordOrNull(value: unknown): Record<string, unknown> | null {
|
||||
return value && typeof value === 'object' && !Array.isArray(value) ? (value as Record<string, unknown>) : null;
|
||||
}
|
||||
|
|
@ -10,6 +14,14 @@ function queryHistoryRecord(connection: unknown): Record<string, unknown> | null
|
|||
return context ? recordOrNull(context.queryHistory) : null;
|
||||
}
|
||||
|
||||
function historicSqlDialectForDriver(driver: KtxConnectionDriver): HistoricSqlDialect {
|
||||
const dialect = historicSqlDialects.find((candidate) => candidate === driver);
|
||||
if (!dialect) {
|
||||
throw new Error(`Driver "${driver}" is marked as historic-SQL capable but has no HistoricSqlDialect mapping.`);
|
||||
}
|
||||
return dialect;
|
||||
}
|
||||
|
||||
export function isQueryHistoryEnabled(connection: unknown): boolean {
|
||||
return queryHistoryRecord(connection)?.enabled === true;
|
||||
}
|
||||
|
|
@ -25,8 +37,6 @@ export function queryHistoryDialectForConnection(connection: unknown): HistoricS
|
|||
}
|
||||
const conn = recordOrNull(connection);
|
||||
const driver = String(conn?.driver ?? '').toLowerCase();
|
||||
if (driver === 'postgres') return 'postgres';
|
||||
if (driver === 'bigquery') return 'bigquery';
|
||||
if (driver === 'snowflake') return 'snowflake';
|
||||
return null;
|
||||
const registration = getDriverRegistration(driver);
|
||||
return registration?.hasHistoricSqlReader ? historicSqlDialectForDriver(registration.driver) : null;
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue