using brecal.model; using MySqlConnector; using System.Data; using System.Runtime.CompilerServices; using static brecal.model.IDBManager; namespace brecal.mysql { public class DBManager : IDBManager { // TODO: remove this and use certificates instead private static readonly string _connectionString = "Server=lager;User ID=ds;Password=HalloWach23;Database=bremen_calling"; public async Task> Load(QueryFunc prepareAction, LoadFunc loadAction, params object[] args) { await using MySqlConnection connection = new MySqlConnection(_connectionString); await connection.OpenAsync(); using MySqlCommand cmd = new(); cmd.Connection = connection; prepareAction(cmd, args); MySqlDataReader reader = await cmd.ExecuteReaderAsync(); List result = loadAction(reader); reader.Close(); return result; } public async Task ExecuteScalar(Action prepareAction) { await using MySqlConnection connection = new MySqlConnection(_connectionString); await connection.OpenAsync(); using MySqlCommand cmd = new(); cmd.Connection = connection; prepareAction(cmd); object? result = await cmd.ExecuteScalarAsync(); return result; } public async Task ExecuteNonQuery(Action prepareAction) { await using MySqlConnection connection = new(_connectionString); await connection.OpenAsync(); using MySqlCommand cmd = new(); cmd.Connection = connection; prepareAction(cmd); await cmd.ExecuteNonQueryAsync(); int result = (int)cmd.LastInsertedId; return result; } } }