CryptoCalc/DBInteraction.cs

53 lines
1.8 KiB
C#

using Dapper;
using System;
using System.Collections.Generic;
using System.Data;
using System.Data.SQLite;
using System.Diagnostics;
using System.Linq;
namespace CryptoCalc
{
public class DBInteraction<T> where T : DBClasses
{
public void SaveData(T data)
{
if (data is null)
{
throw new ArgumentNullException(nameof(data), "No data passed to SQL");
}
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 void ExecuteQuery(T data, string query)
{
if (query is null)
{
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<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;
}
}
}