diff --git a/DBInteraction.cs b/DBInteraction.cs index 116109d..0460c4b 100644 --- a/DBInteraction.cs +++ b/DBInteraction.cs @@ -16,40 +16,37 @@ namespace CryptoCalc { throw new ArgumentNullException(nameof(data)); } + using IDbConnection cnn = new SQLiteConnection(Util.GetConnectionString(data.DBTableName)); cnn.Execute($"insert into {data.DBTableName} {data.DBSaveDataString}", data); Debug.WriteLine($"Saved {data.DBTableName} DB data"); } - //public static List _LoadTransactions() - //{ - // using IDbConnection _connection = new SQLiteConnection(Util.GetConnectionString("RawData")); - // var output = _connection.Query("select * from RawData", new DynamicParameters()); - // Debug.WriteLine("Loaded DB data"); - // return output.ToList(); - //} - - public static List LoadTransactions() + public class GenericDB where T : DBClasses { - using IDbConnection _connection = new SQLiteConnection(Util.GetConnectionString("Transactions")); - IEnumerable output = _connection.Query("select * from Transactions", new DynamicParameters()); - Debug.WriteLine("Loaded DB data"); - return output.ToList(); - } - - public static List LoadTransactionsOfCurrency(string currency) - { - if (currency is null) + public IEnumerable LoadAllData(string tableName) { - throw new ArgumentNullException(nameof(currency)); + if (tableName is null) + { + throw new ArgumentNullException(nameof(tableName)); + } + + using IDbConnection _connection = new SQLiteConnection(Util.GetConnectionString(tableName)); + return _connection.Query($"select * from {tableName}", new DynamicParameters()); } - Debug.WriteLine($"Fetching all {currency} transactions from Database"); - using IDbConnection connection = new SQLiteConnection(Util.GetConnectionString("Transactions")); - return connection.Query($"select * from Transactions where Currency = '{ currency.ToUpper() }'") - .ToList(); + public IEnumerable QueryData(string tableName, string query) + { + if (tableName is null) + { + throw new ArgumentNullException(nameof(query)); + } + + using IDbConnection _connection = new SQLiteConnection(Util.GetConnectionString(tableName)); + return _connection.Query($"{query}", new DynamicParameters()); + } } } } diff --git a/MainWindow.xaml.cs b/MainWindow.xaml.cs index 00daf72..1ff8c63 100644 --- a/MainWindow.xaml.cs +++ b/MainWindow.xaml.cs @@ -8,7 +8,12 @@ namespace CryptoCalc public partial class MainWindow : Window { private readonly Random rand = new(); - private List transactions = new(); + + private DBInteraction.GenericDB transactionDB = new(); + private DBInteraction.GenericDB walletDB = new(); + + private Transaction genericT = new(); + private Wallet genericW = new(); public MainWindow() { @@ -17,32 +22,34 @@ namespace CryptoCalc private void saveButton_Click(object sender, RoutedEventArgs e) { - Transaction dummy = DummyTransaction(); - DBInteraction.SaveData(ref dummy); + genericT = DummyTransaction(); + DBInteraction.SaveData(ref genericT); } private void saveWalletButton_Click(object sender, RoutedEventArgs e) { - Wallet dummy = DummyWallet(); - DBInteraction.SaveData(ref dummy); + genericW = DummyWallet(); + DBInteraction.SaveData(ref genericW); } private void saveButtonFromInput_Click(object sender, RoutedEventArgs e) { - Transaction rd = new(inputCurrency.Text, Convert.ToSingle(inputAmount.Text), inputType.Text); - DBInteraction.SaveData(ref rd); + genericT = new(inputCurrency.Text, Convert.ToSingle(inputAmount.Text), inputType.Text); + DBInteraction.SaveData(ref genericT); } private void readButton_click(object sender, RoutedEventArgs e) { - transactions = DBInteraction.LoadTransactions(); - foreach (Transaction x in transactions) + IEnumerable transactions = transactionDB.LoadAllData(genericT.DBTableName); + foreach (Transaction t in transactions) { - Debug.WriteLine($"{x.GetLocalTimeFromUnixTime(x.UnixTime)} *** {x.Currency} - {x.Amount}"); + Debug.WriteLine($"{t.GetLocalTimeFromUnixTime(t.UnixTime)} *** {t.Currency} - {t.Amount}"); } } private void searchButton_Click(object sender, RoutedEventArgs e) { - transactions = DBInteraction.LoadTransactionsOfCurrency(currencyText.Text); + string query = $"SELECT * from {genericT.DBTableName} WHERE {nameof(genericT.Currency)}=\'{currencyText.Text}\'"; + IEnumerable transactions = transactionDB.QueryData(genericT.DBTableName, query); + //transactions = DBInteraction.LoadTransactionsOfCurrency(currencyText.Text); transactionsFoundListBox.Items.Clear(); foreach (Transaction x in transactions) { @@ -50,6 +57,12 @@ namespace CryptoCalc } } + //private IEnumerable ReadTransactionFromDB() + //{ + // Transaction t = new(); + // return transactionDB.LoadAllData(t.DBTableName); + //} + private Transaction DummyTransaction() { Transaction t = new();