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 NavigationManager NavigationManager
|
||||||
@inject EindhovenOnlineServersStore EindhovenOnlineServersStore
|
@inject EindhovenOnlineServersStore EindhovenOnlineServersStore
|
||||||
|
@inject IServersEFCoreRepository ServersEFCoreRepository
|
||||||
|
|
||||||
@if (Server != null)
|
@if (Server != null)
|
||||||
{
|
{
|
||||||
@ -69,7 +70,7 @@
|
|||||||
{
|
{
|
||||||
if (serverId > 0)
|
if (serverId > 0)
|
||||||
{
|
{
|
||||||
ServersRepository.DeleteServer(serverId);
|
ServersEFCoreRepository.DeleteServer(serverId);
|
||||||
NavigationManager.Refresh(forceReload: true);
|
NavigationManager.Refresh(forceReload: true);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -113,6 +114,8 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
this.Server.IsOnline = status;
|
this.Server.IsOnline = status;
|
||||||
|
|
||||||
|
ServersEFCoreRepository.UpdateServer(this.Server.Id, Server);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,5 +1,7 @@
|
|||||||
@using System.Threading;
|
@using System.Threading;
|
||||||
|
|
||||||
|
@inject IServersEFCoreRepository ServersEFCoreRepository
|
||||||
|
|
||||||
<table class="table table-striped">
|
<table class="table table-striped">
|
||||||
<RepeaterComponent Items="this.servers">
|
<RepeaterComponent Items="this.servers">
|
||||||
<Header>
|
<Header>
|
||||||
@ -61,11 +63,11 @@
|
|||||||
{
|
{
|
||||||
if (string.IsNullOrWhiteSpace(this.SearchFilter))
|
if (string.IsNullOrWhiteSpace(this.SearchFilter))
|
||||||
{
|
{
|
||||||
servers = ServersRepository.GetServersByCity(CityName ?? "Eindhoven");
|
servers = ServersEFCoreRepository.GetServersByCity(CityName ?? "Eindhoven");
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
servers = ServersRepository.SearchServers(SearchFilter);
|
servers = ServersEFCoreRepository.SearchServers(SearchFilter);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -77,11 +79,11 @@
|
|||||||
{
|
{
|
||||||
if (string.IsNullOrWhiteSpace(this.SearchFilter))
|
if (string.IsNullOrWhiteSpace(this.SearchFilter))
|
||||||
{
|
{
|
||||||
servers = ServersRepository.GetServersByCity(CityName ?? "Eindhoven");
|
servers = ServersEFCoreRepository.GetServersByCity(CityName ?? "Eindhoven");
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
servers = ServersRepository.SearchServers(SearchFilter);
|
servers = ServersEFCoreRepository.SearchServers(SearchFilter);
|
||||||
}
|
}
|
||||||
// Render the component again by letting it know the state changed.
|
// Render the component again by letting it know the state changed.
|
||||||
StateHasChanged();
|
StateHasChanged();
|
||||||
|
|||||||
@ -2,6 +2,7 @@
|
|||||||
|
|
||||||
@inject NavigationManager NavigationManager
|
@inject NavigationManager NavigationManager
|
||||||
@inject IJSRuntime JSRuntime
|
@inject IJSRuntime JSRuntime
|
||||||
|
@inject IServersEFCoreRepository ServersEFCoreRepository
|
||||||
|
|
||||||
<NavigationLock
|
<NavigationLock
|
||||||
OnBeforeInternalNavigation="OnBeforeInternalNavigation"
|
OnBeforeInternalNavigation="OnBeforeInternalNavigation"
|
||||||
@ -79,7 +80,7 @@ else
|
|||||||
{
|
{
|
||||||
if (this.Id.HasValue)
|
if (this.Id.HasValue)
|
||||||
{
|
{
|
||||||
server ??= ServersRepository.GetServerById(this.Id.Value);
|
server ??= ServersEFCoreRepository.GetServerById(this.Id.Value);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@ -98,11 +99,11 @@ else
|
|||||||
{
|
{
|
||||||
if (this.Id.HasValue)
|
if (this.Id.HasValue)
|
||||||
{
|
{
|
||||||
ServersRepository.UpdateServer(server.Id, server);
|
ServersEFCoreRepository.UpdateServer(server.Id, server);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
ServersRepository.AddServer(server);
|
ServersEFCoreRepository.AddServer(server);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -2,6 +2,7 @@
|
|||||||
@using Microsoft.AspNetCore.Components.QuickGrid
|
@using Microsoft.AspNetCore.Components.QuickGrid
|
||||||
|
|
||||||
@inject NavigationManager NavigationManager
|
@inject NavigationManager NavigationManager
|
||||||
|
@inject IServersEFCoreRepository ServersEFCoreRepository
|
||||||
|
|
||||||
<h3>QuickGrid demo</h3>
|
<h3>QuickGrid demo</h3>
|
||||||
<br/>
|
<br/>
|
||||||
@ -63,13 +64,21 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
@code {
|
@code {
|
||||||
private List<Server>? servers = ServersRepository.GetServers();
|
private List<Server>? servers;
|
||||||
private PaginationState paginationState = new PaginationState { ItemsPerPage = 5 };
|
private PaginationState paginationState = new PaginationState { ItemsPerPage = 5 };
|
||||||
|
|
||||||
|
protected override void OnAfterRender(bool firstRender)
|
||||||
|
{
|
||||||
|
if (firstRender)
|
||||||
|
{
|
||||||
|
servers = ServersEFCoreRepository.GetServers();
|
||||||
|
}
|
||||||
|
}
|
||||||
private void DeleteServer(int serverId)
|
private void DeleteServer(int serverId)
|
||||||
{
|
{
|
||||||
if (serverId > 0)
|
if (serverId > 0)
|
||||||
{
|
{
|
||||||
ServersRepository.DeleteServer(serverId);
|
ServersEFCoreRepository.DeleteServer(serverId);
|
||||||
NavigationManager.Refresh(forceReload: true);
|
NavigationManager.Refresh(forceReload: true);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -5,6 +5,7 @@
|
|||||||
|
|
||||||
@inject NavigationManager NavigationManager
|
@inject NavigationManager NavigationManager
|
||||||
@inject EindhovenOnlineServersStore EindhovenOnlineServersStore
|
@inject EindhovenOnlineServersStore EindhovenOnlineServersStore
|
||||||
|
@inject IServersEFCoreRepository ServersEFCoreRepository
|
||||||
|
|
||||||
<h3>Servers</h3>
|
<h3>Servers</h3>
|
||||||
<br/>
|
<br/>
|
||||||
@ -64,7 +65,7 @@
|
|||||||
StateHasChanged();
|
StateHasChanged();
|
||||||
}
|
}
|
||||||
|
|
||||||
var serversEindhoven = ServersRepository.GetServersByCity("Eindhoven");
|
var serversEindhoven = ServersEFCoreRepository.GetServersByCity("Eindhoven");
|
||||||
if (serversEindhoven != null)
|
if (serversEindhoven != null)
|
||||||
{
|
{
|
||||||
EindhovenOnlineServersStore.SetNumberServersOnline(serversEindhoven.Count(s => s.IsOnline));
|
EindhovenOnlineServersStore.SetNumberServersOnline(serversEindhoven.Count(s => s.IsOnline));
|
||||||
|
|||||||
@ -4,6 +4,7 @@
|
|||||||
|
|
||||||
@inject NavigationManager NavigationManager
|
@inject NavigationManager NavigationManager
|
||||||
@inject ContainerStorage containerStorage
|
@inject ContainerStorage containerStorage
|
||||||
|
@inject IServersEFCoreRepository ServersEFCoreRepository
|
||||||
|
|
||||||
<h3>Server Status</h3>
|
<h3>Server Status</h3>
|
||||||
<br/>
|
<br/>
|
||||||
@ -48,7 +49,7 @@
|
|||||||
if (server != null)
|
if (server != null)
|
||||||
{
|
{
|
||||||
containerStorage.SetServer(null);
|
containerStorage.SetServer(null);
|
||||||
ServersRepository.AddServer(server);
|
ServersEFCoreRepository.AddServer(server);
|
||||||
NavigationManager.NavigateTo($"/servers/back_from/{server?.City}");
|
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 Microsoft.EntityFrameworkCore;
|
||||||
using ServerManagement.Data;
|
using ServerManagement.Data;
|
||||||
using ServerManagement.Models;
|
|
||||||
|
|
||||||
namespace ServerManagement;
|
namespace ServerManagement.Models;
|
||||||
|
|
||||||
public class ServersEFCoreRepository
|
public class ServersEFCoreRepository : IServersEFCoreRepository
|
||||||
{
|
{
|
||||||
private readonly IDbContextFactory<ServerManagementContext> contextFactory;
|
private readonly IDbContextFactory<ServerManagementContext> contextFactory;
|
||||||
public ServersEFCoreRepository(IDbContextFactory<ServerManagementContext> contextFactory)
|
public ServersEFCoreRepository(IDbContextFactory<ServerManagementContext> contextFactory)
|
||||||
|
|||||||
@ -1,5 +1,6 @@
|
|||||||
namespace ServerManagement.Models
|
namespace ServerManagement.Models
|
||||||
{
|
{
|
||||||
|
// No longer used, since ServersEFCoreRepository is now in use.
|
||||||
public static class ServersRepository
|
public static class ServersRepository
|
||||||
{
|
{
|
||||||
private static List<Server> servers = new List<Server>()
|
private static List<Server> servers = new List<Server>()
|
||||||
|
|||||||
@ -1,6 +1,7 @@
|
|||||||
using Microsoft.EntityFrameworkCore;
|
using Microsoft.EntityFrameworkCore;
|
||||||
using ServerManagement.Components;
|
using ServerManagement.Components;
|
||||||
using ServerManagement.Data;
|
using ServerManagement.Data;
|
||||||
|
using ServerManagement.Models;
|
||||||
using ServerManagement.StateStore;
|
using ServerManagement.StateStore;
|
||||||
|
|
||||||
var builder = WebApplication.CreateBuilder(args);
|
var builder = WebApplication.CreateBuilder(args);
|
||||||
@ -33,6 +34,11 @@ builder.Services.AddScoped<ContainerStorage>();
|
|||||||
|
|
||||||
builder.Services.AddScoped<EindhovenOnlineServersStore>();
|
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();
|
var app = builder.Build();
|
||||||
|
|
||||||
// Configure the HTTP request pipeline.
|
// Configure the HTTP request pipeline.
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user