diff --git a/AccessQueuePlayground/Components/Pages/Config.razor b/AccessQueuePlayground/Components/Pages/Config.razor
index e8bac12..829651a 100644
--- a/AccessQueuePlayground/Components/Pages/Config.razor
+++ b/AccessQueuePlayground/Components/Pages/Config.razor
@@ -1,5 +1,5 @@
@page "/config"
-@inject AccessQueuePlayground.Services.IAccessQueueManager QueueManager
+@inject AccessQueuePlayground.Services.AccessQueueManager QueueManager
@using BlazorBootstrap
Access Queue Configuration
diff --git a/AccessQueuePlayground/Components/Pages/Home.razor b/AccessQueuePlayground/Components/Pages/Home.razor
index a077ce3..0dea6b0 100644
--- a/AccessQueuePlayground/Components/Pages/Home.razor
+++ b/AccessQueuePlayground/Components/Pages/Home.razor
@@ -4,7 +4,7 @@
@using AccessQueueService.Models;
@using BlazorBootstrap
-@inject IAccessQueueManager Manager
+@inject AccessQueueManager Manager
AccessQueue Playground
@if (Config != null)
diff --git a/AccessQueuePlayground/Program.cs b/AccessQueuePlayground/Program.cs
index 349e337..fe51c89 100644
--- a/AccessQueuePlayground/Program.cs
+++ b/AccessQueuePlayground/Program.cs
@@ -28,8 +28,8 @@ else
builder.Services.AddHttpClient();
builder.Services.AddSingleton();
}
-builder.Services.AddSingleton();
-builder.Services.AddSingleton();
+builder.Services.AddSingleton();
+builder.Services.AddSingleton();
builder.Services.AddHostedService();
var app = builder.Build();
diff --git a/AccessQueuePlayground/Services/AccessQueueBackgroundService.cs b/AccessQueuePlayground/Services/AccessQueueBackgroundService.cs
index 1211271..1dd9cc1 100644
--- a/AccessQueuePlayground/Services/AccessQueueBackgroundService.cs
+++ b/AccessQueuePlayground/Services/AccessQueueBackgroundService.cs
@@ -6,10 +6,10 @@ namespace AccessQueuePlayground.Services
{
public class AccessQueueBackgroundService : BackgroundService
{
- private readonly IAccessQueueManager _accessQueueManager;
+ private readonly AccessQueueManager _accessQueueManager;
private readonly IConfiguration _config;
- public AccessQueueBackgroundService(IAccessQueueManager accessQueueManager, IConfiguration config)
+ public AccessQueueBackgroundService(AccessQueueManager accessQueueManager, IConfiguration config)
{
_accessQueueManager = accessQueueManager;
_config = config;
diff --git a/AccessQueuePlayground/Services/AccessQueueManager.cs b/AccessQueuePlayground/Services/AccessQueueManager.cs
index dfb3e10..6cb4f05 100644
--- a/AccessQueuePlayground/Services/AccessQueueManager.cs
+++ b/AccessQueuePlayground/Services/AccessQueueManager.cs
@@ -6,7 +6,7 @@ using Microsoft.Extensions.Configuration;
namespace AccessQueuePlayground.Services
{
- public class AccessQueueManager : IAccessQueueManager
+ public class AccessQueueManager
{
private readonly IAccessService _accessService;
private readonly IConfiguration _config;
diff --git a/AccessQueuePlayground/Services/IAccessQueueManager.cs b/AccessQueuePlayground/Services/IAccessQueueManager.cs
deleted file mode 100644
index df071ba..0000000
--- a/AccessQueuePlayground/Services/IAccessQueueManager.cs
+++ /dev/null
@@ -1,20 +0,0 @@
-using AccessQueuePlayground.Models;
-using AccessQueueService.Models;
-
-namespace AccessQueuePlayground.Services
-{
- public interface IAccessQueueManager
- {
- public event Action? StatusUpdated;
- public AccessQueueConfig GetConfig();
- public void UpdateConfig(AccessQueueConfig config);
- public Task RecalculateStatus();
- public AccessQueueManagerStatus GetStatus();
- public Guid AddUser(bool isActive);
- public void SetUserActive(Guid userId, bool isActive);
- public void RevokeAccess(Guid userId);
- public void RevokeAllAccess();
- public void Reset();
-
- }
-}
diff --git a/AccessQueueService/Data/TakeANumberAccessQueueRepo.cs b/AccessQueueService/Data/AccessQueueRepository.cs
similarity index 98%
rename from AccessQueueService/Data/TakeANumberAccessQueueRepo.cs
rename to AccessQueueService/Data/AccessQueueRepository.cs
index e7dbafa..117c03e 100644
--- a/AccessQueueService/Data/TakeANumberAccessQueueRepo.cs
+++ b/AccessQueueService/Data/AccessQueueRepository.cs
@@ -6,7 +6,7 @@ using Microsoft.Extensions.Configuration;
namespace AccessQueueService.Data
{
- public class TakeANumberAccessQueueRepo : IAccessQueueRepo
+ public class AccessQueueRepository
{
private ConcurrentDictionary _accessTickets = new();
private ConcurrentDictionary _queueNumbers = new();
@@ -189,7 +189,7 @@ namespace AccessQueueService.Data
return JsonSerializer.Serialize(state);
}
- public static TakeANumberAccessQueueRepo FromState(string stateJson)
+ public static AccessQueueRepository FromState(string stateJson)
{
var state = JsonSerializer.Deserialize(stateJson);
if (state?.AccessTickets == null || state?.AccessQueue == null)
diff --git a/AccessQueueService/Data/IAccessQueueRepo.cs b/AccessQueueService/Data/IAccessQueueRepo.cs
deleted file mode 100644
index cb74bc1..0000000
--- a/AccessQueueService/Data/IAccessQueueRepo.cs
+++ /dev/null
@@ -1,21 +0,0 @@
-using System.Runtime.Serialization;
-using AccessQueueService.Models;
-using Microsoft.Extensions.Configuration;
-
-namespace AccessQueueService.Data
-{
- public interface IAccessQueueRepo
- {
- public string ToState();
- public int GetUnexpiredTicketsCount();
- public int GetActiveTicketsCount(DateTime activeCutoff);
- public int GetQueueCount();
- public AccessTicket? GetTicket(string userId);
- public void UpsertTicket(AccessTicket ticket);
- public int GetRequestsAhead(string userId);
- public void Enqueue(AccessTicket ticket);
- public int DeleteExpiredTickets();
- public bool RemoveUser(string userId);
- public bool DidDequeueUntilFull(AccessQueueConfig config);
- }
-}
diff --git a/AccessQueueService/Program.cs b/AccessQueueService/Program.cs
index 9dd670d..aaf86ba 100644
--- a/AccessQueueService/Program.cs
+++ b/AccessQueueService/Program.cs
@@ -17,7 +17,7 @@ builder.Services.AddControllers();
builder.Services.AddEndpointsApiExplorer();
builder.Services.AddSwaggerGen();
builder.Services.AddSingleton();
-builder.Services.AddSingleton(sp =>
+builder.Services.AddSingleton(sp =>
{
string? filePath = builder.Configuration.GetValue("AccessQueue:BackupFilePath");
if (!string.IsNullOrWhiteSpace(filePath) && File.Exists(filePath))
@@ -25,14 +25,14 @@ builder.Services.AddSingleton(sp =>
try
{
var json = File.ReadAllText(filePath);
- return TakeANumberAccessQueueRepo.FromState(json);
+ return AccessQueueRepository.FromState(json);
}
catch (Exception ex)
{
Console.WriteLine($"Failed to load state from {filePath}. Error message: {ex.Message}");
}
}
- return new TakeANumberAccessQueueRepo();
+ return new AccessQueueRepository();
});
builder.Services.AddHostedService();
builder.Services.AddHostedService();
diff --git a/AccessQueueService/Services/AccessQueueSerializerService.cs b/AccessQueueService/Services/AccessQueueSerializerService.cs
index c308330..c24a023 100644
--- a/AccessQueueService/Services/AccessQueueSerializerService.cs
+++ b/AccessQueueService/Services/AccessQueueSerializerService.cs
@@ -5,11 +5,11 @@ namespace AccessQueueService.Services
{
public class AccessQueueSerializerService : BackgroundService
{
- private readonly IAccessQueueRepo _accessRepo;
+ private readonly AccessQueueRepository _accessRepo;
private readonly IConfiguration _config;
private readonly ILogger _logger;
- public AccessQueueSerializerService(IAccessQueueRepo accessRepo, IConfiguration config, ILogger logger)
+ public AccessQueueSerializerService(AccessQueueRepository accessRepo, IConfiguration config, ILogger logger)
{
_accessRepo = accessRepo;
_config = config;
diff --git a/AccessQueueService/Services/AccessService.cs b/AccessQueueService/Services/AccessService.cs
index d28410e..5c8ccf8 100644
--- a/AccessQueueService/Services/AccessService.cs
+++ b/AccessQueueService/Services/AccessService.cs
@@ -8,12 +8,12 @@ namespace AccessQueueService.Services
public class AccessService : IAccessService
{
private readonly IConfiguration _configuration;
- private readonly IAccessQueueRepo _accessQueueRepo;
+ private readonly AccessQueueRepository _accessQueueRepo;
private readonly ILogger _logger;
private readonly SemaphoreSlim _queueLock = new(1, 1);
private AccessQueueConfig _config;
- public AccessService(IConfiguration configuration, IAccessQueueRepo accessQueueRepo, ILogger logger)
+ public AccessService(IConfiguration configuration, AccessQueueRepository accessQueueRepo, ILogger logger)
{
_configuration = configuration;
_accessQueueRepo = accessQueueRepo;
diff --git a/AccessQueueServiceTests/AccessQueueRepoTests.cs b/AccessQueueServiceTests/AccessQueueRepoTests.cs
index 97830f5..c9efb60 100644
--- a/AccessQueueServiceTests/AccessQueueRepoTests.cs
+++ b/AccessQueueServiceTests/AccessQueueRepoTests.cs
@@ -14,7 +14,7 @@ namespace AccessQueueServiceTests
{
public class AccessQueueRepoTests
{
- private readonly TakeANumberAccessQueueRepo _repo;
+ private readonly AccessQueueRepository _repo;
private readonly AccessQueueConfig _simpleConfig = new()
{
ExpirationSeconds = 60,
@@ -42,7 +42,7 @@ namespace AccessQueueServiceTests
public AccessQueueRepoTests()
{
- _repo = new TakeANumberAccessQueueRepo();
+ _repo = new AccessQueueRepository();
}
private List GetSimpleTicketList() => new()
@@ -313,7 +313,7 @@ namespace AccessQueueServiceTests
_repo.Enqueue(ticketWithoutAccess);
string stateJson = _repo.ToState();
- var deserializedRepo = TakeANumberAccessQueueRepo.FromState(stateJson);
+ var deserializedRepo = AccessQueueRepository.FromState(stateJson);
Assert.Equal(1, deserializedRepo.GetUnexpiredTicketsCount());
Assert.Equal(1, deserializedRepo.GetQueueCount());
diff --git a/AccessQueueServiceTests/AccessServiceTests.cs b/AccessQueueServiceTests/AccessServiceTests.cs
index b277ba5..7c8978b 100644
--- a/AccessQueueServiceTests/AccessServiceTests.cs
+++ b/AccessQueueServiceTests/AccessServiceTests.cs
@@ -16,7 +16,6 @@ namespace AccessQueueServiceTests
const int ACT_MILLIS = 1000 * ACT_SECONDS;
const int CAP_LIMIT = 5;
const int BULK_COUNT = 10000;
- const int CACHE_MILLIS = 1000;
private readonly AccessService _accessService;
public AccessServiceTests()
@@ -26,14 +25,13 @@ namespace AccessQueueServiceTests
{ "AccessQueue:ExpirationSeconds", $"{EXP_SECONDS}" },
{ "AccessQueue:ActivitySeconds", $"{ACT_SECONDS}" },
{ "AccessQueue:CapacityLimit", $"{CAP_LIMIT}" },
- { "AccessQueue:RollingExpiration", "true" },
- { "AccessQueue:CacheMilliseconds", $"{CACHE_MILLIS}" }
+ { "AccessQueue:RollingExpiration", "true" }
};
var configuration = new ConfigurationBuilder()
.AddInMemoryCollection(inMemorySettings)
.Build();
- var accessQueueRepo = new TakeANumberAccessQueueRepo();
+ var accessQueueRepo = new AccessQueueRepository();
var loggerFactory = LoggerFactory.Create(builder => builder.AddConsole());
var logger = loggerFactory.CreateLogger();
_accessService = new AccessService(configuration, accessQueueRepo, logger);
@@ -89,9 +87,9 @@ namespace AccessQueueServiceTests
Assert.NotNull(response);
Assert.Null(response.ExpiresOn);
Assert.True(response.RequestsAhead == CAP_LIMIT);
- Assert.Equal(CAP_LIMIT, _accessService.UnexpiredTicketsCount);
- Assert.Equal(CAP_LIMIT, _accessService.ActiveTicketsCount);
- Assert.Equal(CAP_LIMIT + 1, _accessService.QueueCount);
+ Assert.Equal(5, _accessService.UnexpiredTicketsCount);
+ Assert.Equal(5, _accessService.ActiveTicketsCount);
+ Assert.Equal(6, _accessService.QueueCount);
}