Refactored GsmDB

This commit is contained in:
2020-07-01 22:02:38 +01:00
parent 83b9c8b27c
commit 9774b85cae
7 changed files with 93 additions and 75 deletions
+33 -8
View File
@@ -3,12 +3,13 @@ using FireLance.Models;
using Gsm;
using System;
using System.Collections.Generic;
using System.IO;
namespace DevConsole
{
class Program
{
public static GsmDB gsmParser = new GsmDB();
public static readonly GsmRO gsmRO = new GsmRO();
public static FireLanceCRUD fireLanceCRUD = new FireLanceCRUD();
static void Main(string[] args)
@@ -73,14 +74,14 @@ namespace DevConsole
{
case ConsoleKey.A:
Console.WriteLine("Connect to database");
gsmParser.OpenConnection(@"C:\Users\Dunestorm\Projects\FireLance\GSMParser\games.db", 0);
gsmRO.OpenConnection(@"C:\Users\Dunestorm\Projects\FireLance\GSMParser\games.db", 0);
break;
case ConsoleKey.B:
gsmParser.CloseCurrentConnection();
gsmRO.CloseCurrentConnection();
break;
}
Console.WriteLine($"GSMParser Connection State: {gsmParser.IsConnectionOpen()}\n");
Console.WriteLine($"GSMParser Connection State: {gsmRO.IsConnectionOpen()}\n");
}
private static void OptionB()
@@ -89,7 +90,11 @@ namespace DevConsole
string r = Console.ReadLine();
Console.Write("\n");
PrintGameEntries(gsmParser.QueryGameById(r));
PrintGameEntries(gsmRO.LoadRecords<GameEntryModel>(GsmStruct.GameEntries.GameName,
GsmStruct.Tables.GameEntry,
GsmStruct.GameEntries.GameID,
r,
true));
}
private static void OptionC()
@@ -98,7 +103,11 @@ namespace DevConsole
string r = Console.ReadLine();
Console.Write("\n");
PrintDirectories(gsmParser.QueryDirectoryById(r));
PrintDirectories(gsmRO.LoadRecords<DirectoriesModel>("*",
GsmStruct.Tables.Directories,
GsmStruct.DirectoryColumns.GameID,
r,
true));
}
private static void OptionD()
@@ -107,7 +116,11 @@ namespace DevConsole
string r = Console.ReadLine();
Console.Write("\n");
PrintGameEntries(gsmParser.QueryGameByName(r));
PrintGameEntries(gsmRO.LoadRecords<GameEntryModel>(GsmStruct.GameEntries.GameName,
GsmStruct.Tables.GameEntry,
GsmStruct.GameEntries.GameName,
r,
false));
}
private static void OptionE()
@@ -136,7 +149,11 @@ namespace DevConsole
private static void OptionF()
{
//Guid guid = Guid.NewGuid();
List<DirectoriesModel> dm = gsmParser.QueryDirectoryById("600");
List<DirectoriesModel> dm = gsmRO.LoadRecords<DirectoriesModel>("*",
GsmStruct.Tables.Directories,
GsmStruct.DirectoryColumns.GameID,
"600",
true);
foreach (var entry in dm)
{
//entry.Path = guid.ToString();
@@ -156,6 +173,14 @@ namespace DevConsole
}
}
private static void PrintGameEntry(GameEntryModel gameEntry)
{
Console.WriteLine($"GameName: {gameEntry.GameName}");
Console.WriteLine($"BackupWarning: {gameEntry.BackupWarning}");
Console.WriteLine($"RestoreWarning: {gameEntry.RestoreWarning}");
Console.WriteLine($"LastModified: {gameEntry.LastModified}\n");
}
private static void PrintDirectories(List<DirectoriesModel> directoryEntries)
{
foreach (var directory in directoryEntries)
+2 -3
View File
@@ -1,12 +1,11 @@
using FireLance.Interfaces;
using MongoDB.Bson;
using MongoDB.Bson;
using MongoDB.Driver;
using System;
using System.Collections.Generic;
namespace FireLance
{
public class FireLanceCRUD : FireLanceDB, IDatabaseCRUD
public class FireLanceCRUD : FireLanceDB
{
public void InsertRecord<T>(string table, T record)
{
-18
View File
@@ -1,18 +0,0 @@
using System;
using System.Collections.Generic;
namespace FireLance
{
public interface IDatabaseCRUD
{
public void InsertRecord<T>(string table, T record);
public void UpsertRecordById<T>(string table, Guid id, T record);
public List<T> LoadRecordsFromTable<T>(string table);
public T LoadRecordById<T>(string table, Guid id);
public void DeleteRecordById<T>(string table, Guid id);
}
}
+2 -20
View File
@@ -1,16 +1,13 @@
using Microsoft.Data.Sqlite;
using System;
using System.Collections.Generic;
using System.IO;
using Dapper;
using FireLance.Interfaces;
using FireLance.Models;
namespace Gsm
{
public class GsmDB : IDatabaseConnection
public abstract class GsmDB : IDatabaseConnection
{
private SqliteConnection DBConnection = new SqliteConnection();
internal SqliteConnection DBConnection = new SqliteConnection();
public void OpenConnection(string dbLocation, int port)
{
@@ -32,20 +29,5 @@ namespace Gsm
{
return Convert.ToBoolean(DBConnection.State);
}
public List<GameEntryModel> QueryGameById(string id)
{
return (List<GameEntryModel>) DBConnection.Query<GameEntryModel>(QueryBuilder.GameEntryByGameId(id), new DynamicParameters());
}
public List<DirectoriesModel> QueryDirectoryById(string id)
{
return (List<DirectoriesModel>) DBConnection.Query<DirectoriesModel>(QueryBuilder.DirectoryByGameId(id), new DynamicParameters());
}
public List<GameEntryModel> QueryGameByName(string name)
{
return (List<GameEntryModel>) DBConnection.Query<GameEntryModel>(QueryBuilder.GameEntryByName(name), new DynamicParameters());
}
}
}
+28
View File
@@ -0,0 +1,28 @@
using Dapper;
using FireLance.Models;
using System.Collections.Generic;
using System.Linq;
namespace Gsm
{
public class GsmRO : GsmDB
{
public List<T> LoadRecords<T>(string select, string from, string column, string query, bool exactMatch)
{
string command = $"SELECT \"{select}\",*" +
$"FROM \"main\".\"{from}\"" +
$"WHERE \"{column}\"";
if (exactMatch == true)
{
command += $"LIKE \"{query}\"";
}
else
{
command += $"LIKE \"%{query}%\"";
}
return (List<T>) DBConnection.Query<T>(command, new DynamicParameters());
}
}
}
+28
View File
@@ -0,0 +1,28 @@
namespace Gsm
{
public struct GsmStruct
{
public static class Tables
{
public static string Directories { get { return "Directories"; } }
public static string GameEntry { get { return "GameEntry"; } }
public static string RegistryList { get { return "RegistryList"; } }
}
public static class DirectoryColumns
{
public static string GameID { get { return "GameID"; } }
}
public static class GameEntries
{
public static string GameID { get { return "id"; } }
public static string GameName { get { return "GameName"; } }
}
public static class RegistryColumns
{
public static string GameID { get { return "GameID"; } }
}
}
}
-26
View File
@@ -1,26 +0,0 @@
public static class QueryBuilder
{
public static string GameEntryByName(string name)
{
return $"SELECT \"GameName\",*" +
$"FROM \"main\".\"GameEntry\"" +
$"WHERE \"GameName\"" +
$"LIKE \"%{name}%\"";
}
public static string GameEntryByGameId(string id)
{
return $"SELECT \"GameName\",*" +
$"FROM \"main\".\"GameEntry\"" +
$"WHERE \"id\"" +
$"LIKE \"{id}\"";
}
public static string DirectoryByGameId(string id)
{
return $"SELECT \"Path\",*" +
$"FROM \"main\".\"Directories\"" +
$"WHERE \"GameID\"" +
$"LIKE \"{id}\"";
}
}