37 lines
1.1 KiB
TypeScript
37 lines
1.1 KiB
TypeScript
import { Pool } from 'pg';
|
|
import 'dotenv/config';
|
|
|
|
// Environment variables for database configuration
|
|
const PG_HOST = process.env.PG_HOST || 'localhost';
|
|
const PG_PORT = Number(process.env.PG_PORT) || 5432;
|
|
const PG_USER = process.env.PG_USER || 'postgres';
|
|
const PG_PASSWORD = process.env.PG_PASSWORD || '';
|
|
const PG_DB = process.env.PG_DB || 'postgres';
|
|
|
|
// Create a connection pool
|
|
const pool = new Pool({
|
|
host: PG_HOST,
|
|
port: PG_PORT,
|
|
user: PG_USER,
|
|
password: PG_PASSWORD,
|
|
database: PG_DB,
|
|
});
|
|
|
|
export async function pgQuery(query: string, params: any[] = []) {
|
|
try {
|
|
// Get a client from the pool
|
|
const client = await pool.connect();
|
|
try {
|
|
// Execute the query with parameters
|
|
const result = await client.query(query, params);
|
|
return result.rows; // Return only the rows
|
|
} finally {
|
|
// Release the client back to the pool
|
|
client.release();
|
|
}
|
|
} catch (err) {
|
|
// Log error and rethrow it
|
|
console.error(`Error executing query: ${query}`, err);
|
|
throw err;
|
|
}
|
|
} |