Merge remote-tracking branch 'parent/main' into upstream-20241119

This commit is contained in:
KMY 2024-11-19 08:49:55 +09:00
commit 055045981f
221 changed files with 2006 additions and 1127 deletions

View file

@ -116,13 +116,44 @@ let pool;
/**
*
* @param {pg.PoolConfig} config
* @param {string} environment
* @param {import('pino').Logger} logger
* @returns {pg.Pool}
*/
export function getPool(config) {
export function getPool(config, environment, logger) {
if (pool) {
return pool;
}
pool = new pg.Pool(config);
// Setup logging on pool.query and client.query for checked out clients:
// This is taken from: https://node-postgres.com/guides/project-structure
if (environment === 'development') {
const logQuery = (originalQuery) => {
return async (queryTextOrConfig, values, ...rest) => {
const start = process.hrtime();
const result = await originalQuery.apply(pool, [queryTextOrConfig, values, ...rest]);
const duration = process.hrtime(start);
const durationInMs = (duration[0] * 1000000000 + duration[1]) / 1000000;
logger.debug({
query: queryTextOrConfig,
values,
duration: durationInMs
}, 'Executed database query');
return result;
};
};
pool.on('connect', (client) => {
const originalQuery = client.query.bind(client);
client.query = logQuery(originalQuery);
});
}
return pool;
}

View file

@ -101,7 +101,8 @@ const CHANNEL_NAMES = [
];
const startServer = async () => {
const pgPool = Database.getPool(Database.configFromEnv(process.env, environment));
const pgConfig = Database.configFromEnv(process.env, environment);
const pgPool = Database.getPool(pgConfig, environment, logger);
const metrics = setupMetrics(CHANNEL_NAMES, pgPool);

View file

@ -27,7 +27,7 @@
"pino": "^9.0.0",
"pino-http": "^10.0.0",
"prom-client": "^15.0.0",
"uuid": "^10.0.0",
"uuid": "^11.0.0",
"ws": "^8.12.1"
},
"devDependencies": {