Skip to content

feat: [Phase 2] Connection manager + 10 Node.js DB drivers #217

@anandgupta42

Description

@anandgupta42

Phase 2: Connection Manager + DB Drivers

Parent: #214
Depends on: Phase 1

What

Replace the Python ConnectionRegistry, 10 warehouse connectors, credential store, SSH tunneling, and Docker discovery with TypeScript equivalents using native Node.js drivers.

Sub-tasks

  • native/connections/registry.ts — reads connections.json, env vars, project config
  • native/connections/credential-store.ts — 3-tier: keytar → AES-256 → env vars (no plaintext)
  • native/connections/ssh-tunnel.ts — ssh2 with SIGINT/exit cleanup
  • native/connections/docker-discovery.ts — dockerode
  • native/connections/dbt-profiles.ts — YAML + Jinja {{ env_var() }} regex
  • 10 driver files: snowflake, bigquery, postgres, databricks, redshift, mysql, sqlserver, oracle, duckdb, sqlite
  • Lazy driver loading via dynamic import()
  • Register 14 dispatcher methods
  • connections.json backward compatibility test
  • Integration tests against local PostgreSQL + DuckDB

Drivers

Driver Package Pure JS?
snowflake snowflake-sdk Yes
bigquery @google-cloud/bigquery Yes
postgres pg Yes
databricks @databricks/sql / REST Yes
redshift pg Yes
mysql mysql2 Yes
sqlserver mssql/tedious Yes
oracle oracledb thin Yes (12.1+)
duckdb @duckdb/node-api optionalDep
sqlite better-sqlite3 optionalDep

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions