import { Pool, QueryResult, QueryResultRow } from "pg"; export class PgClient { private pgPool: Pool; constructor(args: { pool: Pool }) { this.pgPool = args.pool } public connect() { return this.pgPool.connect() } /** * Wrapper para ejecutar consultas con tipado fuerte. * T es el formato de la respusta. * @param text - La consulta SQL (ej. 'SELECT * FROM users WHERE id = $1') * @param params - Los valores para los placeholders $1, $2, etc. */ public async query( text: string, params?: any[] ): Promise> { return await this.pgPool.query(text, params); }; /** * Función para validar la conexión al inicio. */ public async checkDatabaseConnection(): Promise { const client = await this.pgPool.connect(); const res = await client.query('SELECT NOW()'); console.log(`[o] Database connected successfully at: ${res.rows[0].now}`); client.release(); // Liberamos el cliente de vuelta al pool return; // Si algo falla se tiene que propagar }; }