diff --git a/DevConsole/Program.cs b/DevConsole/Program.cs index da65aa4..8446065 100644 --- a/DevConsole/Program.cs +++ b/DevConsole/Program.cs @@ -14,150 +14,160 @@ namespace DevConsole static void Main(string[] args) { + ConnectToGsmDb(); + ConnectToFlcDb(); + Console.WriteLine(""); while (true) { CommandsMenu(); } } private static void CommandsMenu() { Console.WriteLine("Please select an option below:\n"); - Console.WriteLine("A. GSMParser Database connection"); - Console.WriteLine("B. Query game by ID"); - Console.WriteLine("C. Query directory by ID"); - Console.WriteLine("D. Query game by NAME"); - Console.WriteLine("E. FireLance Database connection"); - Console.WriteLine("F. FireLance Import Predefined SaveData Entry"); + Console.WriteLine("A. Manage DB Connections --->"); + Console.WriteLine("B. GSM Actions --->"); + Console.WriteLine("C. FLC Actions --->"); Console.WriteLine("X. Exit application\n"); Console.Write(":"); - var userInput = Console.ReadKey(); + var userInput = Console.ReadLine(); Console.Write("\n\n"); - switch (userInput.Key) + switch (userInput.ToUpper()) { - case ConsoleKey.A: - OptionA(); + case "A": + CmdDbMgr(); break; - case ConsoleKey.B: - OptionB(); + case "B": + CmdGsmActions(); break; - case ConsoleKey.C: - OptionC(); + case "C": + CmdFlcActions(); break; - case ConsoleKey.D: - OptionD(); - break; - case ConsoleKey.E: - OptionE(); - break; - case ConsoleKey.F: - OptionF(); - break; - case ConsoleKey.X: + case "G": Environment.Exit(0); break; default: + Console.WriteLine("Invalid selection, please enter a listed command."); break; } } + private static void ConnectToGsmDb() + { + gsmRO.OpenConnection(@"C:\Users\Dunestorm\Projects\FireLance\GSMParser\games.db", 0); + Console.WriteLine($"GSMParser Connection State: {gsmRO.IsConnectionOpen()}"); + } + + private static void ConnectToFlcDb() + { + fireLanceCRUD.OpenConnection("sr3", 27017); + Console.WriteLine($"FireLance Connection State: {fireLanceCRUD.IsConnectionOpen()}"); + } + #region Command Options - private static void OptionA() + private static void CmdDbMgr() { + Console.WriteLine("[GsmDb]------------"); Console.WriteLine("A. Open DB"); Console.WriteLine("B. Close DB"); + Console.WriteLine("[FlcDb]------------"); + Console.WriteLine("C. Open DB"); + Console.WriteLine("D. Close DB (Unsupported)"); + Console.WriteLine("X. <--- Go back\n"); Console.Write(":"); - var userInput = Console.ReadKey(); + var userInput = Console.ReadLine(); Console.Write("\n\n"); - switch (userInput.Key) + switch (userInput.ToUpper()) { - case ConsoleKey.A: - Console.WriteLine("Connect to database"); - gsmRO.OpenConnection(@"C:\Users\Dunestorm\Projects\FireLance\GSMParser\games.db", 0); + case "A": + ConnectToGsmDb(); break; - case ConsoleKey.B: + case "B": gsmRO.CloseCurrentConnection(); break; - } - - Console.WriteLine($"GSMParser Connection State: {gsmRO.IsConnectionOpen()}\n"); - } - - private static void OptionB() - { - Console.WriteLine("Enter a game ID:"); - string r = Console.ReadLine(); - Console.Write("\n"); - - PrintGameEntries(gsmRO.LoadRecords( GsmDbStruct.Columns.GameName, - GsmDbStruct.Tables.GameEntry, - GsmDbStruct.Columns.ID, - r, - true)); - } - - private static void OptionC() - { - Console.WriteLine("Enter a game ID:"); - string r = Console.ReadLine(); - Console.Write("\n"); - - PrintDirectories(gsmRO.LoadRecords( "*", - GsmDbStruct.Tables.Directories, - GsmDbStruct.Columns.GameID, - r, - true)); - } - - private static void OptionD() - { - Console.WriteLine("Enter game title to search:"); - string r = Console.ReadLine(); - Console.Write("\n"); - - PrintGameEntries(gsmRO.LoadRecords( GsmDbStruct.Columns.GameName, - GsmDbStruct.Tables.GameEntry, - GsmDbStruct.Columns.GameName, - r, - false)); - } - - private static void OptionE() - { - Console.WriteLine("A. Open DB"); - Console.WriteLine("B. Close DB"); - Console.Write(":"); - - var userInput = Console.ReadKey(); - Console.Write("\n\n"); - - switch (userInput.Key) - { - case ConsoleKey.A: - Console.WriteLine("Connect to database"); - fireLanceCRUD.OpenConnection("sr3", 27017); + case "C": + ConnectToFlcDb(); break; - case ConsoleKey.B: + case "D": fireLanceCRUD.CloseCurrentConnection(); break; + case "X": + break; } - - Console.WriteLine($"FireLance Connection State: {fireLanceCRUD.IsConnectionOpen()}\n"); } - private static void OptionF() + private static void CmdGsmActions() { - //Guid guid = Guid.NewGuid(); - List dm = gsmRO.LoadRecords< DirectoriesModel>("*", - GsmDbStruct.Tables.Directories, - GsmDbStruct.Columns.GameID, - "600", - true); - foreach (var entry in dm) + Console.WriteLine("A. Query game by ID"); + Console.WriteLine("B. Query directory by ID"); + Console.WriteLine("C. Query game by NAME"); + Console.WriteLine("X. <--- Go back\n"); + Console.Write(":"); + + var userInput = Console.ReadLine(); + Console.Write("\n\n"); + + switch (userInput.ToUpper()) { - //entry.Path = guid.ToString(); - fireLanceCRUD.InsertRecord("SaveData", entry); + case "A": + Console.WriteLine("Enter a game ID:"); + + PrintGameEntries(gsmRO.LoadRecords( GsmDbStruct.Columns.GameName, + GsmDbStruct.Tables.GameEntry, + GsmDbStruct.Columns.ID, + Console.ReadLine(), + true)); + break; + case "B": + Console.WriteLine("Enter a game ID:"); + + PrintDirectories(gsmRO.LoadRecords( "*", + GsmDbStruct.Tables.Directories, + GsmDbStruct.Columns.GameID, + Console.ReadLine(), + true)); + break; + case "C": + Console.WriteLine("Enter game title to search:"); + + PrintGameEntries(gsmRO.LoadRecords( GsmDbStruct.Columns.GameName, + GsmDbStruct.Tables.GameEntry, + GsmDbStruct.Columns.GameName, + Console.ReadLine(), + false)); + break; + case "X": + break; + } + } + + private static void CmdFlcActions() + { + Console.WriteLine("A. FireLance Import Predefined SaveData Entry"); + Console.WriteLine("X. <--- Go back\n"); + Console.Write(":"); + + var userInput = Console.ReadLine(); + Console.Write("\n\n"); + + switch (userInput.ToUpper()) + { + case "A": + List dm = gsmRO.LoadRecords("*", + GsmDbStruct.Tables.Directories, + GsmDbStruct.Columns.GameID, + "600", + true); + foreach (var entry in dm) + { + //entry.Path = guid.ToString(); + fireLanceCRUD.InsertRecord("SaveData", entry); + } + break; + case "X": + break; } } #endregion diff --git a/FireLance/FireLanceDB.cs b/FireLance/FireLanceDB.cs index cae7d26..6a3e239 100644 --- a/FireLance/FireLanceDB.cs +++ b/FireLance/FireLanceDB.cs @@ -1,27 +1,13 @@ using FireLance.Interfaces; using MongoDB.Bson; using MongoDB.Driver; +using System; namespace FireLance { public abstract class FireLanceDB : IDatabaseConnection { internal IMongoDatabase db; - - public void CloseCurrentConnection() - { - OpenConnection(string.Empty, 0); - } - - public bool IsConnectionOpen() - { - int connectionCnt = 0; - - try { connectionCnt = db.Client.ListDatabases().ToList().Count; } - catch {} - - return (connectionCnt > 0) ? true : false; - } public void OpenConnection(string dbLocation, int port) { @@ -30,5 +16,20 @@ namespace FireLance db = client.GetDatabase(dbLocation, settings); } + + public void CloseCurrentConnection() + { + throw new NotSupportedException("MongoDB does not support closing connections."); + } + + public bool IsConnectionOpen() + { + int connectionCnt = 0; + + try { connectionCnt = db.Client.ListDatabases().ToList().Count; } + catch { } + + return (connectionCnt > 0) ? true : false; + } } }