mirror of https://github.com/buster-so/buster.git
2.9 KiB
2.9 KiB
CLAUDE.md
This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
Commands
Build and Development
npm run build
- Compile TypeScript to JavaScriptnpm run clean
- Clean build artifacts
Testing
npm test
- Run all tests (unit and integration)npm run test:watch
- Run tests in watch mode for developmentnpm run test:unit
- Run only unit testsnpm run test:integration
- Run only integration tests (requires database connections)npm run test:coverage
- Run tests with coverage report- Run a single test file:
npm test -- tests/unit/adapters/factory.test.ts
Code Quality
npm run lint
- Run ESLint for code quality checks
Architecture
This package provides a unified abstraction layer for connecting to and introspecting multiple database types. Key architectural patterns:
Core Components
-
DataSource Class (
src/data-source.ts
)- Main entry point that manages multiple database adapters
- Routes queries to specific data sources
- Provides unified introspection interface
- Backward compatible as
QueryRouter
-
Adapter Pattern (
src/adapters/
)- Each database type implements
DatabaseAdapter
interface - Adapters handle connection, query execution, and lifecycle
- Created via factory pattern using
createAdapter()
- Each database type implements
-
Introspection Layer (
src/introspection/
)- Separate introspectors implement
DataSourceIntrospector
interface - Provides database structure discovery (databases, schemas, tables, columns)
- Supports column statistics and table metadata
- Scoped introspection allows filtering by database/schema/table
- Separate introspectors implement
Key Design Decisions
- Type Safety: Extensive TypeScript interfaces and type guards for all database operations
- Separation of Concerns: Query execution and introspection are separate interfaces
- Factory Pattern: Credentials determine which adapter implementation to instantiate
- Connection Pooling: Each adapter manages its own connection lifecycle
- Error Handling: Unified error structure with detailed error information
- Smart Truncation: Large text/JSON values in column statistics are intelligently truncated
- Batch Processing: Column statistics fetched in batches of 20 tables for performance
Testing Strategy
- Unit Tests: Test individual components in isolation (adapters, factory, types)
- Integration Tests: Test actual database connections (requires environment variables)
- Test Configuration: Uses Vitest with path aliasing (
@/
maps tosrc/
) - Environment Variables: Each database type has specific test environment variables (e.g.,
TEST_POSTGRES_HOST
)
Supported Databases
Full introspection support:
- Snowflake (with clustering information)
- PostgreSQL
- MySQL
Basic support (introspection placeholders):
- BigQuery
- SQL Server
- Redshift
- Databricks