Fix: Factory patten when opening connection mysql

This commit is contained in:
Eduardo Leonardo Rosa da Silva
2025-10-29 15:32:42 -03:00
parent 76bcb5bb85
commit 53fadf564d
2 changed files with 168 additions and 167 deletions

View File

@@ -4,17 +4,18 @@ namespace WeaponPaints
{
public class Database
{
private readonly IDatabaseConnection _connection;
private readonly Func<IDatabaseConnection> _connectionFactory;
public Database(IDatabaseConnection connection)
public Database(Func<IDatabaseConnection> connectionFactory)
{
_connection = connection;
_connectionFactory = connectionFactory;
}
public async Task<IDatabaseConnection> GetConnectionAsync()
{
await _connection.OpenAsync();
return _connection;
var connection = _connectionFactory();
await connection.OpenAsync();
return connection;
}
}
}

View File

@@ -113,8 +113,8 @@ public partial class WeaponPaints : BasePlugin, IPluginConfig<WeaponPaintsConfig
return;
}
// Criar conexão baseada no tipo de banco
IDatabaseConnection connection;
// Criar factory de conexão baseada no tipo de banco
Func<IDatabaseConnection> connectionFactory;
if (config.DatabaseType.ToLower() == "mysql")
{
var builder = new MySqlConnectionStringBuilder
@@ -127,7 +127,7 @@ public partial class WeaponPaints : BasePlugin, IPluginConfig<WeaponPaintsConfig
Pooling = true,
MaximumPoolSize = 640,
};
connection = new MySQLConnection(builder.ConnectionString, Logger);
connectionFactory = () => new MySQLConnection(builder.ConnectionString, Logger);
}
else // SQLite
{
@@ -142,10 +142,10 @@ public partial class WeaponPaints : BasePlugin, IPluginConfig<WeaponPaintsConfig
var connectionString = $"Data Source={dbPath}";
Logger.LogInformation($"[WeaponPaints] SQLite database path: {dbPath}");
connection = new SQLiteConnection(connectionString, Logger);
connectionFactory = () => new SQLiteConnection(connectionString, Logger);
}
Database = new Database(connection);
Database = new Database(connectionFactory);
Utility.Config = config;
Task.Run(async () => await Utility.CheckDatabaseTables());