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 { await pool.end(); }