using System.Configuration; using System.Data.Common; using Microsoft.Extensions.Configuration; using System.Threading.Tasks; using MySqlConnector; namespace Sony.Filtr.Database { public class DatabaseHandler { private static string _connectionString; private static string _connectionStringReadOnly; public static IConfigurationRoot _configuration; public DatabaseHandler(IConfigurationRoot configuration) { _configuration = configuration; } private static string GetConnectionString() { if (string.IsNullOrEmpty(_connectionString)) _connectionString = _configuration.GetConnectionString("db"); return _connectionString; } private static string GetConnectionStringReadOnly() { if (string.IsNullOrEmpty(_connectionStringReadOnly)) _connectionStringReadOnly = _configuration.GetConnectionString("dbReadOnly"); return _connectionStringReadOnly; } public static string GetConnectionStringByName(string connectionStringName) { return _configuration.GetConnectionString(connectionStringName); } public static MySqlConnection GetOpenConnection() { var connection = new MySqlConnection(GetConnectionString()); connection.Open(); return connection; } public static async Task GetOpenConnectionAsync() { var connection = new MySqlConnection(GetConnectionString()); await connection.OpenAsync(); return connection; } public static MySqlConnection GetOpenReadOnlyConnection() { var connection = new MySqlConnection(GetConnectionStringReadOnly()); connection.Open(); return connection; } public static async Task GetOpenReadOnlyConnectionAsync() { var connection = new MySqlConnection(GetConnectionStringReadOnly()); await connection.OpenAsync(); return connection; } } }