@ticatec/pg-common-library
v3.1.0
Published
Production-ready PostgreSQL driver for Node.js with connection pooling, automatic boolean type conversion, and seamless integration with @ticatec/node-common-library interfaces.
Readme
@ticatec/pg-common-library
A production-ready PostgreSQL database driver implementation for Node.js applications, built on the pg driver with connection pooling and dual CommonJS / ESM support. Integrates seamlessly with @ticatec/node-common-library database abstractions and @ticatec/logger-wrapper.
中文 | English
Features
- Dual Module Support: Full CommonJS and ESM support with TypeScript typings (
lib/cjs&lib/esm) - Transaction Control: Full transaction control with
BEGIN,COMMIT, andROLLBACKoperations - CRUD Operations: Complete support for SQL queries, inserts, updates, and deletes with generic typing
- Interface Compliance: Implements standard
DBConnectionandDBFactoryinterfaces for system decoupling - Connection Pooling: Built-in connection pool management using
pg.Pool - Logger Wrapper Integration: Uses
@ticatec/logger-wrapperfor high-performance structured logging
Installation
pnpm add @ticatec/pg-common-library @ticatec/node-common-library @ticatec/logger-wrapper pg pinoPeer Dependencies
{
"peerDependencies": {
"@ticatec/logger-wrapper": "^0.1.0",
"@ticatec/node-common-library": "^3.1.0",
"pg": "^8.8.0",
"pino": ">=8.0.0"
}
}Quick Start
import pino from 'pino';
import { initialize as initLogger } from '@ticatec/logger-wrapper';
import { initializePg } from '@ticatec/pg-common-library';
import { DBManager } from '@ticatec/node-common-library';
// 1. Initialize Logger
initLogger(pino({ level: 'info' }));
// 2. Initialize PostgreSQL Factory & DBManager
const pgFactory = initializePg({
host: 'localhost',
user: 'postgres',
password: 'secret',
database: 'myapp',
port: 5432,
max: 20
});
DBManager.init(pgFactory);
// 3. Connect and execute
const conn = await DBManager.getInstance().connect();
try {
await conn.beginTransaction();
const user = await conn.find<{ id: number; name: string }>(
'SELECT * FROM users WHERE id = $1',
[1]
);
await conn.commit();
} catch (error) {
await conn.rollback();
} finally {
await conn.close();
}License
MIT © Ticatec
