Refactored DB interaction

This commit is contained in:
Stedd 2022-02-12 17:00:53 +01:00
parent a82928440c
commit 251760a674
2 changed files with 36 additions and 24 deletions

View File

@ -8,33 +8,45 @@ using System.Linq;
namespace CryptoCalc namespace CryptoCalc
{ {
public class DBInteraction public class DBInteraction<T> where T : DBClasses
{ {
public static void SaveData<T>(T data) where T : DBClasses public void SaveData(T data)
{ {
if (data is null) if (data is null)
{ {
throw new ArgumentNullException(nameof(data), "No data passed to SQL"); throw new ArgumentNullException(nameof(data), "No data passed to SQL");
} }
using IDbConnection cnn = new SQLiteConnection(Util.GetConnectionString(data.DBName)); using IDbConnection _connection = new SQLiteConnection(Util.GetConnectionString(data.DBName));
cnn.Execute($"insert into {data.DBTableName} {data.DBSaveDataString}", data); string query = $"insert into {data.DBTableName} {data.DBSaveDataString}";
Debug.WriteLine($"Saved {data.DBTableName} DB data"); _connection.Execute(query, data);
Debug.WriteLine($"Saved data - DB: {data.DBName} - Table: {data.DBTableName} - Query: {query}");
} }
public void ExecuteQuery(T data, string query)
public class GenericDB<T> where T : DBClasses
{ {
public IEnumerable<T> QueryData(T data, string query) if (query is null)
{ {
if (data is null) throw new ArgumentNullException(nameof(query), "No query entered");
{
throw new ArgumentNullException(nameof(data), "DBclass is null");
}
using IDbConnection _connection = new SQLiteConnection(Util.GetConnectionString(data.DBName));
return _connection.Query<T>($"{query}", new DynamicParameters());
} }
using IDbConnection _connection = new SQLiteConnection(Util.GetConnectionString(data.DBName));
_connection.Execute($"{query}");
Debug.WriteLine($"Executed query - DB: {data.DBName} - Query: {query}");
}
public IEnumerable<T> 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<T> output = _connection.Query<T>($"{query}", new DynamicParameters());
Debug.WriteLine($"Executed query - DB: {data.DBName} - Query: {query}");
return output;
} }
} }
} }

View File

@ -9,11 +9,11 @@ namespace CryptoCalc
{ {
private readonly Random rand = new(); private readonly Random rand = new();
private DBInteraction.GenericDB<Transaction> transactionDB = new(); private readonly DBInteraction<Transaction> transactionDB = new();
private DBInteraction.GenericDB<Wallet> walletDB = new(); private readonly DBInteraction<Wallet> walletDB = new();
private Transaction genericT = new(); private readonly Transaction genericT = new();
private Wallet genericW = new(); private readonly Wallet genericW = new();
public MainWindow() public MainWindow()
{ {
@ -22,22 +22,22 @@ namespace CryptoCalc
private void saveButton_Click(object sender, RoutedEventArgs e) private void saveButton_Click(object sender, RoutedEventArgs e)
{ {
DBInteraction.SaveData(DummyTransaction()); transactionDB.SaveData(DummyTransaction());
} }
private void saveWalletButton_Click(object sender, RoutedEventArgs e) private void saveWalletButton_Click(object sender, RoutedEventArgs e)
{ {
DBInteraction.SaveData(DummyWallet()); walletDB.SaveData(DummyWallet());
} }
private void saveButtonFromInput_Click(object sender, RoutedEventArgs e) 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) private void readButton_click(object sender, RoutedEventArgs e)
{ {
string query = $"select * from {genericT.DBTableName}"; string query = $"select * from {genericT.DBTableName}";
IEnumerable <Transaction> transactions = transactionDB.QueryData(genericT, query); IEnumerable <Transaction> transactions = transactionDB.ReturnQuery(genericT, query);
foreach (Transaction t in transactions) foreach (Transaction t in transactions)
{ {
Debug.WriteLine($"{t.GetLocalTimeFromUnixTime(t.UnixTime)} *** {t.Currency} - {t.Amount}"); Debug.WriteLine($"{t.GetLocalTimeFromUnixTime(t.UnixTime)} *** {t.Currency} - {t.Amount}");
@ -46,7 +46,7 @@ namespace CryptoCalc
private void searchButton_Click(object sender, RoutedEventArgs e) private void searchButton_Click(object sender, RoutedEventArgs e)
{ {
string query = $"SELECT * from {genericT.DBTableName} WHERE {nameof(genericT.Currency)}=\'{currencyText.Text}\'"; string query = $"SELECT * from {genericT.DBTableName} WHERE {nameof(genericT.Currency)}=\'{currencyText.Text}\'";
IEnumerable<Transaction> transactions = transactionDB.QueryData(genericT, query); IEnumerable<Transaction> transactions = transactionDB.ReturnQuery(genericT, query);
transactionsFoundListBox.Items.Clear(); transactionsFoundListBox.Items.Clear();
foreach (Transaction x in transactions) foreach (Transaction x in transactions)
{ {