4.1.1 • Published 7 months ago
@aust-wide-tax/db-client v4.1.1
@aust-wide-tax/db-client
A PostgreSQL database client for microservices with automatic schema validation and type safety.
Installation
npm install @aust-wide-tax/db-clientConfiguration
Set the following environment variables in your deployment environment:
AUSTWIDE_DB_HOST=your_host
AUSTWIDE_DB_PORT=5432
AUSTWIDE_DB_NAME=your_database
AUSTWIDE_DB_USER=your_user
AUSTWIDE_DB_PASSWORD=your_password
AUSTWIDE_DB_SSL=true # Optional, for SSL connectionsUsage
Basic Usage
import Database from '@aust-wide-tax/db-client';
// Create a new database instance
const db = new Database();
// Use the database
const users = await db.users.find({ role: 'admin' });Table Operations
// Insert a record
const newUser = await db.users.insert({
name: 'John Doe',
email: 'john@example.com'
});
// Find records
const users = await db.users.find({
email: 'john@example.com'
});
// Update records
const updatedUsers = await db.users.update(
{ id: 1 }, // criteria
{ name: 'Jane Doe' } // new data
);
// Delete a record
const deletedUser = await db.users.delete(1);Connection Management
The client uses connection pooling for better performance. Here's how to properly manage connections in your microservice:
// database.ts
import Database from '@aust-wide-tax/db-client';
// Create a single instance for your service
export const db = new Database();
// userService.ts
export class UserService {
constructor(private db: Database) {}
async getUser(id: number) {
return await this.db.users.find({ id });
}
}
// index.ts (main service file)
import { db } from './database';
import { UserService } from './userService';
const userService = new UserService(db);
// Handle graceful shutdown
process.on('SIGTERM', async () => {
console.log('Shutting down...');
await db.shutdown();
process.exit(0);
});Best Practices
Create a Single Instance:
// ✅ GOOD: Create one instance and reuse it const db = new Database();Don't Shutdown After Every Operation:
// ❌ BAD: Don't do this async function getUser(id: number) { const db = new Database(); const user = await db.users.find({ id }); await db.shutdown(); // Don't do this! return user; }Handle Service Shutdown:
// ✅ GOOD: Shutdown only when the service is stopping process.on('SIGTERM', async () => { await db.shutdown(); });
Features
- Automatic schema validation
- Type safety with TypeScript
- Dynamic table access
- Connection pooling
- SQL injection protection
- Support for complex queries
- Graceful connection management
License
MIT
4.1.1
7 months ago
4.1.0
7 months ago
4.0.0
7 months ago
3.1.0
7 months ago
3.0.0
7 months ago
2.1.1
7 months ago
2.1.0
7 months ago
2.0.0
7 months ago
1.4.2
7 months ago
1.4.1
7 months ago
1.4.0
7 months ago
1.3.2
8 months ago
1.3.1
8 months ago
1.3.0
8 months ago
1.2.0
8 months ago
1.1.0
8 months ago
1.0.1
8 months ago
1.0.0
8 months ago