Create IServersEFCoreRepository interface, register as service and use dependency injection to replace the static ServersRepository.
This commit is contained in:
parent
3eb15f6f8c
commit
dcf5e7b675
@ -2,6 +2,7 @@
|
||||
|
||||
@inject NavigationManager NavigationManager
|
||||
@inject EindhovenOnlineServersStore EindhovenOnlineServersStore
|
||||
@inject IServersEFCoreRepository ServersEFCoreRepository
|
||||
|
||||
@if (Server != null)
|
||||
{
|
||||
@ -69,7 +70,7 @@
|
||||
{
|
||||
if (serverId > 0)
|
||||
{
|
||||
ServersRepository.DeleteServer(serverId);
|
||||
ServersEFCoreRepository.DeleteServer(serverId);
|
||||
NavigationManager.Refresh(forceReload: true);
|
||||
}
|
||||
}
|
||||
@ -113,6 +114,8 @@
|
||||
}
|
||||
}
|
||||
this.Server.IsOnline = status;
|
||||
|
||||
ServersEFCoreRepository.UpdateServer(this.Server.Id, Server);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -1,5 +1,7 @@
|
||||
@using System.Threading;
|
||||
|
||||
@inject IServersEFCoreRepository ServersEFCoreRepository
|
||||
|
||||
<table class="table table-striped">
|
||||
<RepeaterComponent Items="this.servers">
|
||||
<Header>
|
||||
@ -61,11 +63,11 @@
|
||||
{
|
||||
if (string.IsNullOrWhiteSpace(this.SearchFilter))
|
||||
{
|
||||
servers = ServersRepository.GetServersByCity(CityName ?? "Eindhoven");
|
||||
servers = ServersEFCoreRepository.GetServersByCity(CityName ?? "Eindhoven");
|
||||
}
|
||||
else
|
||||
{
|
||||
servers = ServersRepository.SearchServers(SearchFilter);
|
||||
servers = ServersEFCoreRepository.SearchServers(SearchFilter);
|
||||
}
|
||||
}
|
||||
|
||||
@ -77,11 +79,11 @@
|
||||
{
|
||||
if (string.IsNullOrWhiteSpace(this.SearchFilter))
|
||||
{
|
||||
servers = ServersRepository.GetServersByCity(CityName ?? "Eindhoven");
|
||||
servers = ServersEFCoreRepository.GetServersByCity(CityName ?? "Eindhoven");
|
||||
}
|
||||
else
|
||||
{
|
||||
servers = ServersRepository.SearchServers(SearchFilter);
|
||||
servers = ServersEFCoreRepository.SearchServers(SearchFilter);
|
||||
}
|
||||
// Render the component again by letting it know the state changed.
|
||||
StateHasChanged();
|
||||
|
||||
@ -2,6 +2,7 @@
|
||||
|
||||
@inject NavigationManager NavigationManager
|
||||
@inject IJSRuntime JSRuntime
|
||||
@inject IServersEFCoreRepository ServersEFCoreRepository
|
||||
|
||||
<NavigationLock
|
||||
OnBeforeInternalNavigation="OnBeforeInternalNavigation"
|
||||
@ -79,7 +80,7 @@ else
|
||||
{
|
||||
if (this.Id.HasValue)
|
||||
{
|
||||
server ??= ServersRepository.GetServerById(this.Id.Value);
|
||||
server ??= ServersEFCoreRepository.GetServerById(this.Id.Value);
|
||||
}
|
||||
else
|
||||
{
|
||||
@ -98,11 +99,11 @@ else
|
||||
{
|
||||
if (this.Id.HasValue)
|
||||
{
|
||||
ServersRepository.UpdateServer(server.Id, server);
|
||||
ServersEFCoreRepository.UpdateServer(server.Id, server);
|
||||
}
|
||||
else
|
||||
{
|
||||
ServersRepository.AddServer(server);
|
||||
ServersEFCoreRepository.AddServer(server);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -2,6 +2,7 @@
|
||||
@using Microsoft.AspNetCore.Components.QuickGrid
|
||||
|
||||
@inject NavigationManager NavigationManager
|
||||
@inject IServersEFCoreRepository ServersEFCoreRepository
|
||||
|
||||
<h3>QuickGrid demo</h3>
|
||||
<br/>
|
||||
@ -63,13 +64,21 @@
|
||||
}
|
||||
|
||||
@code {
|
||||
private List<Server>? servers = ServersRepository.GetServers();
|
||||
private List<Server>? servers;
|
||||
private PaginationState paginationState = new PaginationState { ItemsPerPage = 5 };
|
||||
|
||||
protected override void OnAfterRender(bool firstRender)
|
||||
{
|
||||
if (firstRender)
|
||||
{
|
||||
servers = ServersEFCoreRepository.GetServers();
|
||||
}
|
||||
}
|
||||
private void DeleteServer(int serverId)
|
||||
{
|
||||
if (serverId > 0)
|
||||
{
|
||||
ServersRepository.DeleteServer(serverId);
|
||||
ServersEFCoreRepository.DeleteServer(serverId);
|
||||
NavigationManager.Refresh(forceReload: true);
|
||||
}
|
||||
}
|
||||
|
||||
@ -5,6 +5,7 @@
|
||||
|
||||
@inject NavigationManager NavigationManager
|
||||
@inject EindhovenOnlineServersStore EindhovenOnlineServersStore
|
||||
@inject IServersEFCoreRepository ServersEFCoreRepository
|
||||
|
||||
<h3>Servers</h3>
|
||||
<br/>
|
||||
@ -64,7 +65,7 @@
|
||||
StateHasChanged();
|
||||
}
|
||||
|
||||
var serversEindhoven = ServersRepository.GetServersByCity("Eindhoven");
|
||||
var serversEindhoven = ServersEFCoreRepository.GetServersByCity("Eindhoven");
|
||||
if (serversEindhoven != null)
|
||||
{
|
||||
EindhovenOnlineServersStore.SetNumberServersOnline(serversEindhoven.Count(s => s.IsOnline));
|
||||
|
||||
@ -4,6 +4,7 @@
|
||||
|
||||
@inject NavigationManager NavigationManager
|
||||
@inject ContainerStorage containerStorage
|
||||
@inject IServersEFCoreRepository ServersEFCoreRepository
|
||||
|
||||
<h3>Server Status</h3>
|
||||
<br/>
|
||||
@ -48,7 +49,7 @@
|
||||
if (server != null)
|
||||
{
|
||||
containerStorage.SetServer(null);
|
||||
ServersRepository.AddServer(server);
|
||||
ServersEFCoreRepository.AddServer(server);
|
||||
NavigationManager.NavigateTo($"/servers/back_from/{server?.City}");
|
||||
}
|
||||
}
|
||||
|
||||
13
ServerManagement/Models/IServersEFCoreRepository.cs
Normal file
13
ServerManagement/Models/IServersEFCoreRepository.cs
Normal file
@ -0,0 +1,13 @@
|
||||
namespace ServerManagement.Models
|
||||
{
|
||||
public interface IServersEFCoreRepository
|
||||
{
|
||||
void AddServer(Server server);
|
||||
void DeleteServer(int serverId);
|
||||
Server? GetServerById(int id);
|
||||
List<Server> GetServers();
|
||||
List<Server> GetServersByCity(string cityName);
|
||||
List<Server> SearchServers(string serverFilter);
|
||||
void UpdateServer(int serverId, Server server);
|
||||
}
|
||||
}
|
||||
@ -1,10 +1,9 @@
|
||||
using Microsoft.EntityFrameworkCore;
|
||||
using ServerManagement.Data;
|
||||
using ServerManagement.Models;
|
||||
|
||||
namespace ServerManagement;
|
||||
namespace ServerManagement.Models;
|
||||
|
||||
public class ServersEFCoreRepository
|
||||
public class ServersEFCoreRepository : IServersEFCoreRepository
|
||||
{
|
||||
private readonly IDbContextFactory<ServerManagementContext> contextFactory;
|
||||
public ServersEFCoreRepository(IDbContextFactory<ServerManagementContext> contextFactory)
|
||||
|
||||
@ -1,5 +1,6 @@
|
||||
namespace ServerManagement.Models
|
||||
{
|
||||
// No longer used, since ServersEFCoreRepository is now in use.
|
||||
public static class ServersRepository
|
||||
{
|
||||
private static List<Server> servers = new List<Server>()
|
||||
|
||||
@ -1,6 +1,7 @@
|
||||
using Microsoft.EntityFrameworkCore;
|
||||
using ServerManagement.Components;
|
||||
using ServerManagement.Data;
|
||||
using ServerManagement.Models;
|
||||
using ServerManagement.StateStore;
|
||||
|
||||
var builder = WebApplication.CreateBuilder(args);
|
||||
@ -33,6 +34,11 @@ builder.Services.AddScoped<ContainerStorage>();
|
||||
|
||||
builder.Services.AddScoped<EindhovenOnlineServersStore>();
|
||||
|
||||
// Transient is used here, the database is already globally accessible,
|
||||
// so this service does not need to live longer than necessary, just when needed.
|
||||
// First the interface is registered, then its concrete implementation.
|
||||
builder.Services.AddTransient<IServersEFCoreRepository, ServersEFCoreRepository>();
|
||||
|
||||
var app = builder.Build();
|
||||
|
||||
// Configure the HTTP request pipeline.
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user