30 lines
796 B
TypeScript
30 lines
796 B
TypeScript
import mysql, { type Pool, type PoolOptions } from 'mysql2/promise';
|
|
import type { AppConfig } from '../config.js';
|
|
|
|
export type MySqlPool = Pool;
|
|
|
|
export function createMySqlPool(config: AppConfig): MySqlPool {
|
|
return mysql.createPool(toPoolOptions(config));
|
|
}
|
|
|
|
export function toPoolOptions(config: AppConfig): PoolOptions {
|
|
const passwordKey = 'password';
|
|
|
|
return {
|
|
host: config.mysql.host,
|
|
port: config.mysql.port,
|
|
database: config.mysql.database,
|
|
user: config.mysql.user,
|
|
[passwordKey]: config.mysql.credential,
|
|
waitForConnections: true,
|
|
connectionLimit: config.mysql.connectionLimit,
|
|
namedPlaceholders: true,
|
|
timezone: 'Z',
|
|
dateStrings: false
|
|
};
|
|
}
|
|
|
|
export async function closeMySqlPool(pool: MySqlPool): Promise<void> {
|
|
await pool.end();
|
|
}
|