DBuddy
A TypeScript SQL library for PostgreSQL.

Installation
npm install dbuddy
npm install dbuddy@beta
Development Setup
Prerequisites
- Node.js 18+
- Docker and Docker Compose
Installation
npm install
Environment Configuration
Copy the example environment file and configure your database settings:
cp .env.example .env
Edit .env with your database configuration:
# Standard PostgreSQL environment variables
PGHOST=localhost
PGPORT=15432
PGDATABASE=dbuddy_dev
PGUSER=postgres
PGPASSWORD=postgres
# Alternative: use DATABASE_URL
# DATABASE_URL=postgresql://postgres:postgres@localhost:15432/dbuddy_dev
Database Setup
Start the PostgreSQL database:
docker-compose up -d
The database will be available at localhost:15432 with:
- Database:
dbuddy_dev
- User:
postgres
- Password:
postgres
Development
npm run build
npm run dev
npm test
npm run test:run
npm run test:coverage
npm run lint
npm run lint:fix
npm run typecheck
TypeScript Type Generation
Generate TypeScript interfaces and query builders from your database schema:
npx dbuddy
npx dbuddy ./my-types
npx dbuddy ./generated users posts comments
npm run generate
npm run generate:types
This will create TypeScript files with:
- Interface definitions for each table
- Typed query builder classes
- Factory functions for creating queries
Usage
import { Database, getDatabaseConfig } from 'dbuddy'
const db = new Database()
const db2 = new Database({
host: 'localhost',
port: 15432,
database: 'dbuddy_dev',
user: 'postgres',
password: 'postgres'
})
const config = getDatabaseConfig()
const db3 = new Database(config)
const result = await db.query('SELECT * FROM users')
console.log(result.rows)
const user = await db.query('SELECT * FROM users WHERE id = $1', [1])
await db.close()
Using Generated Types
After generating types, you can use them for type-safe database queries:
import { Database } from 'dbuddy'
import { userQuery, User } from './generated'
const db = new Database()
const users = await userQuery(db)
.where(q => q.isActive.equals(true))
.and(q => q.createdAt.greaterThan(new Date('2024-01-01')))
.select()
console.log(users[0].firstName)
Database Migrations
DBuddy includes a comprehensive migration system for managing database schema changes:
npx dbuddy migration init
npx dbuddy migration create add_users_table
npx dbuddy migration up
npx dbuddy migration status
npx dbuddy migration down
npx dbuddy migration up --dry-run
See MIGRATION.md for complete migration documentation.
License
MIT