server initial commit
This commit is contained in:
31
server/models/db.js
Normal file
31
server/models/db.js
Normal file
@ -0,0 +1,31 @@
|
||||
import dotenv from 'dotenv';
|
||||
import {Pool} from 'pg';
|
||||
dotenv.config();
|
||||
|
||||
const pool = new Pool(process.env.DATABASE_URL ? {connectionString: process.env.DATABASE_URL} : {
|
||||
user: process.env.DB_USER,
|
||||
host: process.env.DB_HOST,
|
||||
database: process.env.DB_NAME,
|
||||
password: process.env.DB_PASSWORD,
|
||||
port: parseInt(process.env.DB_PORT || '5432', 10),
|
||||
});
|
||||
|
||||
|
||||
/**
|
||||
* Generic query function for PostgreSQL database.
|
||||
* @param {string} text
|
||||
* @param {any[]} [params]
|
||||
* @return {Promise<any[]>}
|
||||
*/
|
||||
async function query(text, params= []) {
|
||||
const start = Date.now();
|
||||
const res = await pool.query(text, params).then(qr => qr);
|
||||
const duration = Date.now() - start;
|
||||
if (params) for (let i = 0; i < params.length; i++) text = text.replace("$".concat(String(i + 1)), params[i]);
|
||||
console.log('executed query', {text, duration, rows: res.rowCount});
|
||||
return res.rows;
|
||||
}
|
||||
export default {
|
||||
pool,
|
||||
query
|
||||
};
|
||||
Reference in New Issue
Block a user