module appbase.mysql.connection;

public import database.mysql;
import database.mysql.pool;

__gshared private ConnectionPool connectionPoolManager;

void initDBConnectionPool(string host, string user, string password, string database, ushort port = 3306,
    uint maxConnections = 10, uint initialConnections = 3, uint incrementalConnections = 3, uint waitSeconds = 5)
{
    connectionPoolManager = ConnectionPool.getInstance(
        host, user, password, database, port, maxConnections, initialConnections, incrementalConnections, waitSeconds);
}

void destroyDBConnectionPool()
{
    connectionPoolManager.destroy();
}

Connection getConnection()
{
    Connection conn = connectionPoolManager.getConnection();
    if (conn is null)
    {
        throw new Exception("ConnectionPool.getConnection() fail.");
    }

    conn.allowClientPreparedCache = true;
    return conn;
}

void releaseConnection(Connection conn)
{
    if (conn is null)
    {
        return;
    }

    connectionPoolManager.releaseConnection(conn);
}