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 { 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 { if (instance) { await instance.disconnect(); instance = null; } }