43 lines
1.2 KiB
TypeScript
43 lines
1.2 KiB
TypeScript
import mysql, { PoolOptions, Pool } from "mysql2";
|
|
import { Pool as pPool } from "mysql2/promise"
|
|
import * as fs from 'fs';
|
|
import * as appEnv from "./env";
|
|
|
|
let pool: Pool | undefined;
|
|
let promisePool: pPool | undefined;
|
|
|
|
export function getPool(): Pool {
|
|
const access: PoolOptions = {
|
|
host: appEnv.getMysqlHost(),
|
|
port: appEnv.getMysqlPort(),
|
|
user: appEnv.getMysqlUser(),
|
|
password: appEnv.getMysqlPassword(),
|
|
database: appEnv.getMysqlDatabase(),
|
|
waitForConnections: true,
|
|
connectionLimit: 10,
|
|
maxIdle: 10,
|
|
idleTimeout: 60000,
|
|
queueLimit: 0,
|
|
enableKeepAlive: true,
|
|
keepAliveInitialDelay: 0,
|
|
ssl: {
|
|
ca: fs.readFileSync(appEnv.getMysqlSslCaFile()),
|
|
key: fs.readFileSync(appEnv.getMysqlSslKeyFile()),
|
|
cert: fs.readFileSync(appEnv.getMysqlSslCertFile())
|
|
}
|
|
}
|
|
|
|
if (typeof pool === 'undefined') {
|
|
pool = mysql.createPool(access)
|
|
}
|
|
|
|
return pool
|
|
}
|
|
|
|
export function getPromisePool(): pPool {
|
|
if (typeof promisePool === 'undefined') {
|
|
promisePool = getPool().promise()
|
|
}
|
|
return promisePool
|
|
}
|