Skip to content
Open
9 changes: 2 additions & 7 deletions packages/drivers/src/bigquery.ts
Original file line numberDiff line numberDiff line change
Expand Up@@ -3,16 +3,11 @@
*/

import type { ConnectionConfig, Connector, ConnectorResult, ExecuteOptions, SchemaColumn } from "./types"
import { loadOptionalDriver } from "./resolve"

export async function connect(config: ConnectionConfig): Promise<Connector> {
let BigQueryModule: any
try {
BigQueryModule = await import("@google-cloud/bigquery")
} catch {
throw new Error(
"BigQuery driver not installed. Run: npm install @google-cloud/bigquery",
)
}
BigQueryModule = await loadOptionalDriver("bigquery", "@google-cloud/bigquery")

const BigQuery = BigQueryModule.BigQuery ?? BigQueryModule.default?.BigQuery
let client: any
Expand Down
13 changes: 5 additions & 8 deletions packages/drivers/src/clickhouse.ts
Original file line numberDiff line numberDiff line change
Expand Up@@ -6,17 +6,14 @@
*/

import type { ConnectionConfig, Connector, ConnectorResult, ExecuteOptions, SchemaColumn } from "./types"
import { loadOptionalDriver } from "./resolve"

export async function connect(config: ConnectionConfig): Promise<Connector> {
let createClient: any
try {
const mod = await import("@clickhouse/client")
createClient = mod.createClient ?? mod.default?.createClient
if (!createClient) {
throw new Error("createClient export not found in @clickhouse/client")
}
} catch {
throw new Error("ClickHouse driver not installed. Run: npm install @clickhouse/client")
const clickhouseModule = await loadOptionalDriver("clickhouse", "@clickhouse/client")
createClient = clickhouseModule.createClient ?? clickhouseModule.default?.createClient
if (!createClient) {
throw new Error("createClient export not found in @clickhouse/client — check the installed package version")
}

let client: any
Expand Down
11 changes: 3 additions & 8 deletions packages/drivers/src/databricks.ts
Original file line numberDiff line numberDiff line change
Expand Up@@ -3,17 +3,12 @@
*/

import type { ConnectionConfig, Connector, ConnectorResult, ExecuteOptions, SchemaColumn } from "./types"
import { loadOptionalDriver } from "./resolve"

export async function connect(config: ConnectionConfig): Promise<Connector> {
let databricksModule: any
try {
databricksModule = await import("@databricks/sql")
databricksModule = databricksModule.default || databricksModule
} catch {
throw new Error(
"Databricks driver not installed. Run: npm install @databricks/sql",
)
}
databricksModule = await loadOptionalDriver("databricks", "@databricks/sql")
databricksModule = databricksModule.default || databricksModule

let client: any
let session: any
Expand Down
9 changes: 3 additions & 6 deletions packages/drivers/src/duckdb.ts
Original file line numberDiff line numberDiff line change
Expand Up@@ -3,15 +3,12 @@
*/

import type { ConnectionConfig, Connector, ConnectorResult, ExecuteOptions, SchemaColumn } from "./types"
import { loadOptionalDriver } from "./resolve"

export async function connect(config: ConnectionConfig): Promise<Connector> {
let duckdb: any
try {
duckdb = await import("duckdb")
duckdb = duckdb.default || duckdb
} catch {
throw new Error("DuckDB driver not installed. Run: npm install duckdb")
}
duckdb = await loadOptionalDriver("duckdb", "duckdb")
duckdb = duckdb.default || duckdb

const dbPath = (config.path as string) ?? ":memory:"
let db: any
Expand Down
9 changes: 3 additions & 6 deletions packages/drivers/src/mongodb.ts
Original file line numberDiff line numberDiff line change
Expand Up@@ -15,6 +15,7 @@
*/

import type { ConnectionConfig, Connector, ConnectorResult, SchemaColumn } from "./types"
import { loadOptionalDriver } from "./resolve"

/** Supported MQL commands. */
type MqlCommand =
Expand DownExpand Up@@ -130,12 +131,8 @@ function extractFields(docs: Record<string, unknown>[]): Map<string, Set<string>

export async function connect(config: ConnectionConfig): Promise<Connector> {
let mongoModule: any
try {
mongoModule = await import("mongodb")
mongoModule = mongoModule.default || mongoModule
} catch {
throw new Error("MongoDB driver not installed. Run: npm install mongodb")
}
mongoModule = await loadOptionalDriver("mongodb", "mongodb")
mongoModule = mongoModule.default || mongoModule

const MongoClient = mongoModule.MongoClient

Expand Down
9 changes: 3 additions & 6 deletions packages/drivers/src/mysql.ts
Original file line numberDiff line numberDiff line change
Expand Up@@ -3,15 +3,12 @@
*/

import type { ConnectionConfig, Connector, ConnectorResult, ExecuteOptions, SchemaColumn } from "./types"
import { loadOptionalDriver } from "./resolve"

export async function connect(config: ConnectionConfig): Promise<Connector> {
let mysql: any
try {
mysql = await import("mysql2/promise")
mysql = mysql.default || mysql
} catch {
throw new Error("MySQL driver not installed. Run: npm install mysql2")
}
mysql = await loadOptionalDriver("mysql", "mysql2/promise")
mysql = mysql.default || mysql

let pool: any

Expand Down
12 changes: 3 additions & 9 deletions packages/drivers/src/oracle.ts
Original file line numberDiff line numberDiff line change
Expand Up@@ -3,18 +3,12 @@
*/

import type { ConnectionConfig, Connector, ConnectorResult, ExecuteOptions, SchemaColumn } from "./types"
import { loadOptionalDriver } from "./resolve"

export async function connect(config: ConnectionConfig): Promise<Connector> {
let oracledb: any
try {
// @ts-expect-error — optional dependency, loaded at runtime
oracledb = await import("oracledb")
oracledb = oracledb.default || oracledb
} catch {
throw new Error(
"Oracle driver not installed. Run: npm install oracledb",
)
}
oracledb = await loadOptionalDriver("oracle", "oracledb")
oracledb = oracledb.default || oracledb

// Use thin mode (pure JS, no Oracle client needed)
oracledb.initOracleClient = undefined
Expand Down
7 changes: 2 additions & 5 deletions packages/drivers/src/postgres.ts
Original file line numberDiff line numberDiff line change
Expand Up@@ -3,14 +3,11 @@
*/

import type { ConnectionConfig, Connector, ConnectorResult, ExecuteOptions, SchemaColumn } from "./types"
import { loadOptionalDriver } from "./resolve"

export async function connect(config: ConnectionConfig): Promise<Connector> {
let pg: any
try {
pg = await import("pg")
} catch {
throw new Error("PostgreSQL driver not installed. Run: npm install pg @types/pg")
}
pg = await loadOptionalDriver("postgres", "pg")

const Pool = pg.default?.Pool ?? pg.Pool
let pool: any
Expand Down
9 changes: 2 additions & 7 deletions packages/drivers/src/redshift.ts
Original file line numberDiff line numberDiff line change
Expand Up@@ -4,16 +4,11 @@
*/

import type { ConnectionConfig, Connector, ConnectorResult, ExecuteOptions, SchemaColumn } from "./types"
import { loadOptionalDriver } from "./resolve"

export async function connect(config: ConnectionConfig): Promise<Connector> {
let pg: any
try {
pg = await import("pg")
} catch {
throw new Error(
"Redshift driver not installed (uses pg). Run: npm install pg @types/pg",
)
}
pg = await loadOptionalDriver("redshift", "pg")

const Pool = pg.default?.Pool ?? pg.Pool
let pool: any
Expand Down
Loading
Loading