diff --git a/DBInteraction.cs b/DBInteraction.cs index 4d27355..47e83ee 100644 --- a/DBInteraction.cs +++ b/DBInteraction.cs @@ -8,33 +8,45 @@ using System.Linq; namespace CryptoCalc { - public class DBInteraction + public class DBInteraction where T : DBClasses { - public static void SaveData(T data) where T : DBClasses + public void SaveData(T data) { if (data is null) { throw new ArgumentNullException(nameof(data), "No data passed to SQL"); } - using IDbConnection cnn = new SQLiteConnection(Util.GetConnectionString(data.DBName)); - cnn.Execute($"insert into {data.DBTableName} {data.DBSaveDataString}", data); - Debug.WriteLine($"Saved {data.DBTableName} DB data"); + using IDbConnection _connection = new SQLiteConnection(Util.GetConnectionString(data.DBName)); + string query = $"insert into {data.DBTableName} {data.DBSaveDataString}"; + _connection.Execute(query, data); + Debug.WriteLine($"Saved data - DB: {data.DBName} - Table: {data.DBTableName} - Query: {query}"); } - - public class GenericDB where T : DBClasses + public void ExecuteQuery(T data, string query) { - public IEnumerable QueryData(T data, string query) + if (query is null) { - if (data is null) - { - throw new ArgumentNullException(nameof(data), "DBclass is null"); - } - - using IDbConnection _connection = new SQLiteConnection(Util.GetConnectionString(data.DBName)); - return _connection.Query($"{query}", new DynamicParameters()); + throw new ArgumentNullException(nameof(query), "No query entered"); } + + using IDbConnection _connection = new SQLiteConnection(Util.GetConnectionString(data.DBName)); + _connection.Execute($"{query}"); + Debug.WriteLine($"Executed query - DB: {data.DBName} - Query: {query}"); + } + + public IEnumerable ReturnQuery(T data, string query) + { + if (data is null) + { + throw new ArgumentNullException(nameof(data), "DBclass is null"); + } + + using IDbConnection _connection = new SQLiteConnection(Util.GetConnectionString(data.DBName)); + IEnumerable output = _connection.Query($"{query}", new DynamicParameters()); + Debug.WriteLine($"Executed query - DB: {data.DBName} - Query: {query}"); + + return output; } } } diff --git a/MainWindow.xaml.cs b/MainWindow.xaml.cs index c681f9e..c8877a0 100644 --- a/MainWindow.xaml.cs +++ b/MainWindow.xaml.cs @@ -9,11 +9,11 @@ namespace CryptoCalc { private readonly Random rand = new(); - private DBInteraction.GenericDB transactionDB = new(); - private DBInteraction.GenericDB walletDB = new(); + private readonly DBInteraction transactionDB = new(); + private readonly DBInteraction walletDB = new(); - private Transaction genericT = new(); - private Wallet genericW = new(); + private readonly Transaction genericT = new(); + private readonly Wallet genericW = new(); public MainWindow() { @@ -22,22 +22,22 @@ namespace CryptoCalc private void saveButton_Click(object sender, RoutedEventArgs e) { - DBInteraction.SaveData(DummyTransaction()); + transactionDB.SaveData(DummyTransaction()); } private void saveWalletButton_Click(object sender, RoutedEventArgs e) { - DBInteraction.SaveData(DummyWallet()); + walletDB.SaveData(DummyWallet()); } private void saveButtonFromInput_Click(object sender, RoutedEventArgs e) { - DBInteraction.SaveData(new Transaction(inputCurrency.Text, Convert.ToSingle(inputAmount.Text), inputType.Text)); + transactionDB.SaveData(new Transaction(inputCurrency.Text, Convert.ToSingle(inputAmount.Text), inputType.Text)); } private void readButton_click(object sender, RoutedEventArgs e) { string query = $"select * from {genericT.DBTableName}"; - IEnumerable transactions = transactionDB.QueryData(genericT, query); + IEnumerable transactions = transactionDB.ReturnQuery(genericT, query); foreach (Transaction t in transactions) { Debug.WriteLine($"{t.GetLocalTimeFromUnixTime(t.UnixTime)} *** {t.Currency} - {t.Amount}"); @@ -46,7 +46,7 @@ namespace CryptoCalc private void searchButton_Click(object sender, RoutedEventArgs e) { string query = $"SELECT * from {genericT.DBTableName} WHERE {nameof(genericT.Currency)}=\'{currencyText.Text}\'"; - IEnumerable transactions = transactionDB.QueryData(genericT, query); + IEnumerable transactions = transactionDB.ReturnQuery(genericT, query); transactionsFoundListBox.Items.Clear(); foreach (Transaction x in transactions) {