add database-aware MySQL pooling

This commit is contained in:
udo
2026-07-18 12:55:48 +00:00
parent 418c5812dc
commit 810c19b042
10 changed files with 83 additions and 31 deletions
+6 -4
View File
@@ -27,10 +27,11 @@ struct MySQL {
String request_host;
String request_username;
String request_password;
String request_database;
std::vector<MySQLFieldInfo> field_info;
bool connect(String host = "localhost", String username = "root", String password = "");
bool connect(String host = "localhost", String username = "root", String password = "", String database = "");
bool reset_connection();
void disconnect();
String error();
@@ -46,14 +47,14 @@ struct MySQL {
};
inline MySQL* mysql_connect(String host = "localhost", String username = "root", String password = "")
inline MySQL* mysql_connect(String host = "localhost", String username = "root", String password = "", String database = "")
{
if(context)
{
for(void* raw : context->resources.mysql_connections)
{
MySQL* db = (MySQL*)raw;
if(db && db->request_pooled && db->connection && db->request_host == host && db->request_username == username && db->request_password == password)
if(db && db->request_pooled && db->connection && db->request_host == host && db->request_username == username && db->request_password == password && db->request_database == database)
{
db->request_leases++;
return(db);
@@ -67,7 +68,8 @@ inline MySQL* mysql_connect(String host = "localhost", String username = "root",
db->request_host = host;
db->request_username = username;
db->request_password = password;
db->connect(host, username, password);
db->request_database = database;
db->connect(host, username, password, database);
return(db);
}