diff --git a/src/lib/server/drizzle/index.ts b/src/lib/server/drizzle/index.ts index ec4fb8c..42e58a5 100644 --- a/src/lib/server/drizzle/index.ts +++ b/src/lib/server/drizzle/index.ts @@ -6,15 +6,27 @@ import * as schema from './schema'; const { DATABASE_DB, DATABASE_HOST, DATABASE_PASS, DATABASE_USER } = env; export class DB { - static mysqlConnection: mysql.Connection; + static mysqlConnection: mysql.Pool; static drizzle: ReturnType>; static async init() { - DB.mysqlConnection = await mysql.createConnection({ + DB.mysqlConnection = mysql.createPool({ host: DATABASE_HOST, user: DATABASE_USER, password: DATABASE_PASS, - database: DATABASE_DB + database: DATABASE_DB, + keepAliveInitialDelay: 10 * 1000, // 10 seconds + enableKeepAlive: true, + maxIdle: 0, + idleTimeout: 5 * 60 * 1000 // 5 minutes + }); + + DB.mysqlConnection.on('connection', (connection) => { + connection.on('error', (error) => { + // We log warning on connection error, this is not a critical error + console.warn('Error received on connection. Will destroy.', { error }); + connection.destroy(); + }); }); DB.drizzle = drizzle(DB.mysqlConnection, { schema, mode: 'default' });