From d41a8021d8fc76349deef74a96e7be14d83af11c Mon Sep 17 00:00:00 2001 From: "Eric P. Nusbaum" Date: Sun, 31 Dec 2023 14:04:28 -0500 Subject: [PATCH 1/3] Refactor to use Primary Constructor Pattern --- MBBSEmu/Database/Repositories/RepositoryBase.cs | 16 ++++------------ 1 file changed, 4 insertions(+), 12 deletions(-) diff --git a/MBBSEmu/Database/Repositories/RepositoryBase.cs b/MBBSEmu/Database/Repositories/RepositoryBase.cs index 8d951ae0..8c450872 100644 --- a/MBBSEmu/Database/Repositories/RepositoryBase.cs +++ b/MBBSEmu/Database/Repositories/RepositoryBase.cs @@ -14,11 +14,9 @@ namespace MBBSEmu.Database.Repositories /// /// Holds common Dapper Functionality for executing Queries /// - public abstract class RepositoryBase : IRepositoryBase, IDisposable + public abstract class RepositoryBase(ISessionBuilder sessionBuilder, IResourceManager resourceManager) : IRepositoryBase, IDisposable { - private readonly IResourceManager _resourceManager; - - private readonly DbConnection _connection; + private readonly DbConnection _connection = sessionBuilder.GetConnection(); public void Dispose() { @@ -26,20 +24,14 @@ public void Dispose() _connection.Dispose(); } - protected RepositoryBase(ISessionBuilder sessionBuilder, IResourceManager resourceManager) - { - _connection = sessionBuilder.GetConnection(); - _resourceManager = resourceManager; - } - public IEnumerable Query(object enumQuery, object parameters) { - return _connection.Query(_resourceManager.GetString($"{SqlQueryAttribute.Get(enumQuery)}"), parameters); + return _connection.Query(resourceManager.GetString($"{SqlQueryAttribute.Get(enumQuery)}"), parameters); } public IEnumerable Query(object enumQuery, object parameters) { - var sql = _resourceManager.GetString($"{SqlQueryAttribute.Get(enumQuery)}"); + var sql = resourceManager.GetString($"{SqlQueryAttribute.Get(enumQuery)}"); return _connection.Query(sql, parameters); } From d52e72cdeb5dcec37dc89b99c85bd7b883de44ba Mon Sep 17 00:00:00 2001 From: "Eric P. Nusbaum" Date: Sun, 31 Dec 2023 14:04:46 -0500 Subject: [PATCH 2/3] Refactor to use Primary Constructor Pattern --- MBBSEmu/Database/Repositories/Account/AccountRepository.cs | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/MBBSEmu/Database/Repositories/Account/AccountRepository.cs b/MBBSEmu/Database/Repositories/Account/AccountRepository.cs index f0886d75..a36c31b4 100644 --- a/MBBSEmu/Database/Repositories/Account/AccountRepository.cs +++ b/MBBSEmu/Database/Repositories/Account/AccountRepository.cs @@ -12,12 +12,9 @@ namespace MBBSEmu.Database.Repositories.Account /// /// Repository Pattern for the MBBSEmu Account Database /// - public class AccountRepository : RepositoryBase, IAccountRepository + public class AccountRepository(ISessionBuilder sessionBuilder, IResourceManager resourceManager) + : RepositoryBase(sessionBuilder, resourceManager), IAccountRepository { - public AccountRepository(ISessionBuilder sessionBuilder, IResourceManager resourceManager) : base(sessionBuilder, resourceManager) - { - } - public bool CreateTable() { var result = Query(EnumQueries.CreateAccountsTable, null); From 78f074016f50c195e37fd5d480f4fbe1e49b99e1 Mon Sep 17 00:00:00 2001 From: "Eric P. Nusbaum" Date: Sun, 31 Dec 2023 14:05:31 -0500 Subject: [PATCH 3/3] Apply Default Keys defined in AppSettings on DBRESET - Fixes when using `-DBRESET` to apply default user keys defined in `appsettings.json` - Updated to use Primary Constructor Pattern --- .../AccountKey/AccountKeyRepository.cs | 24 +++++++++++-------- 1 file changed, 14 insertions(+), 10 deletions(-) diff --git a/MBBSEmu/Database/Repositories/AccountKey/AccountKeyRepository.cs b/MBBSEmu/Database/Repositories/AccountKey/AccountKeyRepository.cs index 320e605f..d618afb5 100644 --- a/MBBSEmu/Database/Repositories/AccountKey/AccountKeyRepository.cs +++ b/MBBSEmu/Database/Repositories/AccountKey/AccountKeyRepository.cs @@ -1,18 +1,15 @@ using MBBSEmu.Database.Repositories.AccountKey.Model; using MBBSEmu.Database.Repositories.AccountKey.Queries; using MBBSEmu.Database.Session; +using MBBSEmu.Resources; using System.Collections.Generic; using System.Linq; -using MBBSEmu.Resources; namespace MBBSEmu.Database.Repositories.AccountKey { - public class AccountKeyRepository : RepositoryBase, IAccountKeyRepository + public class AccountKeyRepository(ISessionBuilder sessionBuilder, IResourceManager resourceManager, AppSettingsManager appSettingsManager) + : RepositoryBase(sessionBuilder, resourceManager), IAccountKeyRepository { - public AccountKeyRepository(ISessionBuilder sessionBuilder, IResourceManager resourceManager) : base(sessionBuilder, resourceManager) - { - } - public bool CreateTable() { var result = Query(EnumQueries.CreateAccountKeysTable, null); @@ -69,14 +66,21 @@ public void Reset() CreateTable(); //Keys for SYSOP - InsertAccountKeyByUsername("sysop", "DEMO"); - InsertAccountKeyByUsername("sysop", "NORMAL"); InsertAccountKeyByUsername("sysop", "SUPER"); InsertAccountKeyByUsername("sysop", "SYSOP"); + ApplyDefaultAccountKeys("sysop"); + //Keys for GUEST - InsertAccountKeyByUsername("guest", "DEMO"); - InsertAccountKeyByUsername("guest", "NORMAL"); + ApplyDefaultAccountKeys("guest"); + return; + + //Local Function to apply default account keys defined in AppSettingsManager + void ApplyDefaultAccountKeys(string userName) + { + foreach (var accountKey in appSettingsManager.DefaultKeys) + InsertAccountKeyByUsername(userName, accountKey); + } } } }