diff --git a/DevConsole/Program.cs b/DevConsole/Program.cs index e11a929..a81aeef 100644 --- a/DevConsole/Program.cs +++ b/DevConsole/Program.cs @@ -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(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("*", + 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(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 dm = gsmParser.QueryDirectoryById("600"); + List dm = gsmRO.LoadRecords("*", + 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 directoryEntries) { foreach (var directory in directoryEntries) diff --git a/FireLance/FireLanceCRUD.cs b/FireLance/FireLanceCRUD.cs index a011ed3..4dfbd44 100644 --- a/FireLance/FireLanceCRUD.cs +++ b/FireLance/FireLanceCRUD.cs @@ -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(string table, T record) { diff --git a/FireLance/Interfaces/IDatabaseCRUD.cs b/FireLance/Interfaces/IDatabaseCRUD.cs deleted file mode 100644 index 18a88bf..0000000 --- a/FireLance/Interfaces/IDatabaseCRUD.cs +++ /dev/null @@ -1,18 +0,0 @@ -using System; -using System.Collections.Generic; - -namespace FireLance -{ - public interface IDatabaseCRUD - { - public void InsertRecord(string table, T record); - - public void UpsertRecordById(string table, Guid id, T record); - - public List LoadRecordsFromTable(string table); - - public T LoadRecordById(string table, Guid id); - - public void DeleteRecordById(string table, Guid id); - } -} \ No newline at end of file diff --git a/GSMParser/GsmDB.cs b/GSMParser/GsmDB.cs index b84d55e..13ddf17 100644 --- a/GSMParser/GsmDB.cs +++ b/GSMParser/GsmDB.cs @@ -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 QueryGameById(string id) - { - return (List) DBConnection.Query(QueryBuilder.GameEntryByGameId(id), new DynamicParameters()); - } - - public List QueryDirectoryById(string id) - { - return (List) DBConnection.Query(QueryBuilder.DirectoryByGameId(id), new DynamicParameters()); - } - - public List QueryGameByName(string name) - { - return (List) DBConnection.Query(QueryBuilder.GameEntryByName(name), new DynamicParameters()); - } } } diff --git a/GSMParser/GsmRO.cs b/GSMParser/GsmRO.cs new file mode 100644 index 0000000..6f01d08 --- /dev/null +++ b/GSMParser/GsmRO.cs @@ -0,0 +1,28 @@ +using Dapper; +using FireLance.Models; +using System.Collections.Generic; +using System.Linq; + +namespace Gsm +{ + public class GsmRO : GsmDB + { + public List LoadRecords(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) DBConnection.Query(command, new DynamicParameters()); + } + } +} diff --git a/GSMParser/GsmStruct.cs b/GSMParser/GsmStruct.cs new file mode 100644 index 0000000..58a8d2b --- /dev/null +++ b/GSMParser/GsmStruct.cs @@ -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"; } } + } + } +} diff --git a/GSMParser/QueryBuilder.cs b/GSMParser/QueryBuilder.cs deleted file mode 100644 index 77e29f4..0000000 --- a/GSMParser/QueryBuilder.cs +++ /dev/null @@ -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}\""; - } -}