@entro314labs/drizzle-client
v1.0.0
Published
Drizzle ORM client wrapper with Neon serverless support, read replicas, and utilities
Downloads
6
Maintainers
Readme
@entro314labs/drizzle-client
Drizzle ORM client wrapper with Neon serverless support, read replicas, and utilities for Entrolytics.
Installation
pnpm add @entro314labs/drizzle-clientFeatures
- Neon Serverless Support: Optimized for Neon PostgreSQL with HTTP connections
- Read Replicas: Automatic routing of read queries to replica databases
- Transaction Support: Full transaction support with isolation levels
- Health Checks: Built-in database health monitoring
- Connection Pooling: Configurable connection pooling for standard PostgreSQL
- Debug Logging: Optional query logging via
debugpackage
Usage
Basic Setup
import { EntrolyticsDrizzleClient } from '@entro314labs/drizzle-client';
import * as schema from './schema';
const db = new EntrolyticsDrizzleClient({
url: process.env.DATABASE_URL,
schema,
logQuery: process.env.NODE_ENV === 'development',
});
// Use the client
const users = await db.client.select().from(schema.users);With Read Replica
const db = new EntrolyticsDrizzleClient({
url: process.env.DATABASE_URL,
replicaUrl: process.env.DATABASE_REPLICA_URL,
schema,
});
// Reads automatically use replica
const users = await db.getReadClient().select().from(schema.users);
// Writes always use primary
await db.getWriteClient().insert(schema.users).values({ name: 'John' });Transactions
const result = await db.transaction(async (tx) => {
const user = await tx.insert(schema.users).values({ name: 'John' }).returning();
await tx.insert(schema.profiles).values({ userId: user[0].id });
return user;
}, {
isolationLevel: 'serializable',
});Raw Queries
// Automatically routes to replica for SELECT queries
const result = await db.rawQuery<User>('SELECT * FROM users WHERE id = $1', [userId]);Health Check
const health = await db.healthCheck();
// { ok: true, latency: 23 }Configuration Options
| Option | Type | Default | Description |
|--------|------|---------|-------------|
| url | string | required | Primary database connection URL |
| replicaUrl | string | - | Read replica connection URL |
| schema | object | - | Drizzle schema object |
| logQuery | boolean | false | Enable query logging |
| queryLogger | function | - | Custom query logger function |
| type | 'neon' \| 'postgres' | 'neon' | Database type |
| poolConfig | object | - | Connection pool configuration |
License
MIT - Entrolytics
