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 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 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; } } }