50 lines
No EOL
1.3 KiB
TypeScript
50 lines
No EOL
1.3 KiB
TypeScript
import { PostgreSQLClient } from './client';
|
|
import type { PostgreSQLClientConfig } from './types';
|
|
|
|
/**
|
|
* Singleton PostgreSQL client instance
|
|
* Provides global access to a single PostgreSQL connection pool
|
|
*/
|
|
let instance: PostgreSQLClient | null = null;
|
|
|
|
/**
|
|
* Initialize the singleton PostgreSQL client
|
|
*/
|
|
export async function connectPostgreSQL(config?: PostgreSQLClientConfig): Promise<PostgreSQLClient> {
|
|
if (!instance) {
|
|
if (!config) {
|
|
throw new Error('PostgreSQL client not initialized. Call connectPostgreSQL(config) first.');
|
|
}
|
|
instance = new PostgreSQLClient(config);
|
|
await instance.connect();
|
|
}
|
|
return instance;
|
|
}
|
|
|
|
/**
|
|
* Get the singleton PostgreSQL client instance
|
|
* @throws Error if not initialized
|
|
*/
|
|
export function getPostgreSQLClient(): PostgreSQLClient {
|
|
if (!instance) {
|
|
throw new Error('PostgreSQL client not initialized. Call connectPostgreSQL(config) first.');
|
|
}
|
|
return instance;
|
|
}
|
|
|
|
/**
|
|
* Check if the PostgreSQL client is initialized
|
|
*/
|
|
export function isInitialized(): boolean {
|
|
return instance !== null && instance.connected;
|
|
}
|
|
|
|
/**
|
|
* Disconnect and reset the singleton instance
|
|
*/
|
|
export async function disconnectPostgreSQL(): Promise<void> {
|
|
if (instance) {
|
|
await instance.disconnect();
|
|
instance = null;
|
|
}
|
|
} |