51 lines
1.2 KiB
JavaScript
51 lines
1.2 KiB
JavaScript
const mysql = require('mysql2/promise');
|
|
const path = require('path');
|
|
require('dotenv').config({ path: path.resolve(__dirname, '../../..', '.env') });
|
|
|
|
// Database configuration
|
|
const dbConfig = {
|
|
host: process.env.DB_HOST,
|
|
user: process.env.DB_USER,
|
|
password: process.env.DB_PASSWORD,
|
|
database: process.env.DB_NAME,
|
|
waitForConnections: true,
|
|
connectionLimit: 10,
|
|
queueLimit: 0,
|
|
// Add performance optimizations
|
|
namedPlaceholders: true,
|
|
maxPreparedStatements: 256,
|
|
enableKeepAlive: true,
|
|
keepAliveInitialDelay: 0,
|
|
// Add memory optimizations
|
|
flags: [
|
|
'FOUND_ROWS',
|
|
'LONG_PASSWORD',
|
|
'PROTOCOL_41',
|
|
'TRANSACTIONS',
|
|
'SECURE_CONNECTION',
|
|
'MULTI_RESULTS',
|
|
'PS_MULTI_RESULTS',
|
|
'PLUGIN_AUTH',
|
|
'CONNECT_ATTRS',
|
|
'PLUGIN_AUTH_LENENC_CLIENT_DATA',
|
|
'SESSION_TRACK',
|
|
'MULTI_STATEMENTS'
|
|
]
|
|
};
|
|
|
|
// Create a single pool instance to be reused
|
|
const pool = mysql.createPool(dbConfig);
|
|
|
|
async function getConnection() {
|
|
return await pool.getConnection();
|
|
}
|
|
|
|
async function closePool() {
|
|
await pool.end();
|
|
}
|
|
|
|
module.exports = {
|
|
dbConfig,
|
|
getConnection,
|
|
closePool
|
|
};
|