diff --git a/src/HopFrame.Web.Admin/Generators/IAdminPageGenerator.cs b/src/HopFrame.Web.Admin/Generators/IAdminPageGenerator.cs index 30a6ef5..65998bd 100644 --- a/src/HopFrame.Web.Admin/Generators/IAdminPageGenerator.cs +++ b/src/HopFrame.Web.Admin/Generators/IAdminPageGenerator.cs @@ -78,11 +78,11 @@ public interface IAdminPageGenerator { IAdminPageGenerator DefaultSort(Expression> propertyExpression, ListSortDirection direction); /// - /// Specifies the repository for the page + /// Specifies the repository provider for the page /// - /// The specified repository + /// The specified provider /// - IAdminPageGenerator ConfigureRepository() where TRepository : ModelRepository; + IAdminPageGenerator ConfigureProvider() where TRepository : ModelProvider; /// diff --git a/src/HopFrame.Web.Admin/Generators/Implementation/AdminPageGenerator.cs b/src/HopFrame.Web.Admin/Generators/Implementation/AdminPageGenerator.cs index d2fb6ec..eb61f7d 100644 --- a/src/HopFrame.Web.Admin/Generators/Implementation/AdminPageGenerator.cs +++ b/src/HopFrame.Web.Admin/Generators/Implementation/AdminPageGenerator.cs @@ -91,7 +91,7 @@ internal sealed class AdminPageGenerator : IAdminPageGenerator, return this; } - public IAdminPageGenerator ConfigureRepository() where TRepository : ModelRepository { + public IAdminPageGenerator ConfigureProvider() where TRepository : ModelProvider { Page.RepositoryProvider = typeof(TRepository); return this; } diff --git a/src/HopFrame.Web.Admin/ModelRepository.cs b/src/HopFrame.Web.Admin/ModelProvider.cs similarity index 89% rename from src/HopFrame.Web.Admin/ModelRepository.cs rename to src/HopFrame.Web.Admin/ModelProvider.cs index 45de247..7725bf5 100644 --- a/src/HopFrame.Web.Admin/ModelRepository.cs +++ b/src/HopFrame.Web.Admin/ModelProvider.cs @@ -1,6 +1,6 @@ namespace HopFrame.Web.Admin; -public abstract class ModelRepository : IModelRepository { +public abstract class ModelProvider : IModelProvider { public abstract Task> ReadAll(); public abstract Task Create(TModel model); public abstract Task Update(TModel model); @@ -25,7 +25,7 @@ public abstract class ModelRepository : IModelRepository { } } -public interface IModelRepository { +public interface IModelProvider { Task> ReadAllO(); Task CreateO(object model); Task UpdateO(object model); diff --git a/src/HopFrame.Web.Admin/Models/AdminPage.cs b/src/HopFrame.Web.Admin/Models/AdminPage.cs index 1eb43db..e449e8c 100644 --- a/src/HopFrame.Web.Admin/Models/AdminPage.cs +++ b/src/HopFrame.Web.Admin/Models/AdminPage.cs @@ -24,10 +24,12 @@ public class AdminPage { public bool ShowDeleteButton { get; set; } = true; public bool ShowUpdateButton { get; set; } = true; - public IModelRepository LoadModelRepository(IServiceProvider provider) { + public IModelProvider LoadModelProvider(IServiceProvider provider) { if (RepositoryProvider is null) return null; + var repoProvider = provider.GetService(RepositoryProvider); + if (repoProvider != null) return repoProvider as IModelProvider; var dependencies = AdminContextGenerator.ResolveDependencies(RepositoryProvider, provider); - return Activator.CreateInstance(RepositoryProvider, dependencies) as IModelRepository; + return Activator.CreateInstance(RepositoryProvider, dependencies) as IModelProvider; } } diff --git a/src/HopFrame.Web/Components/Administration/AdminPageModal.razor b/src/HopFrame.Web/Components/Administration/AdminPageModal.razor index 8e04608..4876323 100644 --- a/src/HopFrame.Web/Components/Administration/AdminPageModal.razor +++ b/src/HopFrame.Web/Components/Administration/AdminPageModal.razor @@ -128,7 +128,7 @@ private Dictionary _validationIdentifiers; private IDictionary _values; private Dictionary _selectorValues; - private IModelRepository _repository; + private IModelProvider _provider; private AdminPage _currentPage; private object _entry; @@ -143,7 +143,7 @@ _currentPage = page; _entry = entryToEdit; _isEdit = entryToEdit is not null; - _repository = _currentPage.LoadModelRepository(Provider); + _provider = _currentPage.LoadModelProvider(Provider); _entry ??= Activator.CreateInstance(_currentPage.ModelType); _context = new EditContext(_entry); @@ -246,7 +246,7 @@ foreach (var value in _values) { if (value.Key.Unique) { if (value.Value == value.Key.GetValue(_entry)) continue; - var data = _repository!.ReadAllO().GetAwaiter().GetResult(); + var data = _provider!.ReadAllO().GetAwaiter().GetResult(); foreach (var entry in data) { var other = value.Key.GetValue(entry); if (!other.Equals(value.Value)) continue; @@ -293,7 +293,7 @@ throw new ArgumentException($"'{property.Name}' cannot be a selector because a admin page for '{type.Name}' does not exist!"); } - var repo = page.LoadModelRepository(Provider); + var repo = page.LoadModelProvider(Provider); var objects = (await repo!.ReadAllO()).ToArray(); _selectorValues[property] = objects; @@ -346,7 +346,7 @@ } if (!_isEdit) { - await _repository.CreateO(_entry); + await _provider.CreateO(_entry); Alerts.FireAsync(new SweetAlertOptions { Title = "New entry added!", @@ -356,7 +356,7 @@ }); } else { - await _repository.UpdateO(_entry); + await _provider.UpdateO(_entry); Alerts.FireAsync(new SweetAlertOptions { Title = "Entry updated!", diff --git a/src/HopFrame.Web/HopAdminContext.cs b/src/HopFrame.Web/HopAdminContext.cs index 6d89e76..0beffd2 100644 --- a/src/HopFrame.Web/HopAdminContext.cs +++ b/src/HopFrame.Web/HopAdminContext.cs @@ -5,7 +5,7 @@ using HopFrame.Web.Admin; using HopFrame.Web.Admin.Attributes; using HopFrame.Web.Admin.Generators; using HopFrame.Web.Admin.Models; -using HopFrame.Web.Repositories; +using HopFrame.Web.Provider; namespace HopFrame.Web; @@ -20,7 +20,7 @@ internal class HopAdminContext : AdminPagesContext { public override void OnModelCreating(IAdminContextGenerator generator) { generator.Page() .Description("On this page you can manage all user accounts.") - .ConfigureRepository() + .ConfigureProvider() .ViewPermission(AdminPermissions.ViewUsers) .CreatePermission(AdminPermissions.AddUser) .UpdatePermission(AdminPermissions.EditUser) @@ -63,7 +63,7 @@ internal class HopAdminContext : AdminPagesContext { generator.Page() .Description("On this page you can view, create, edit and delete permission groups.") - .ConfigureRepository() + .ConfigureProvider() .ViewPermission(AdminPermissions.ViewGroups) .CreatePermission(AdminPermissions.AddGroup) .UpdatePermission(AdminPermissions.EditGroup) diff --git a/src/HopFrame.Web/Pages/Administration/AdminPageList.razor b/src/HopFrame.Web/Pages/Administration/AdminPageList.razor index 2f2519c..163f66f 100644 --- a/src/HopFrame.Web/Pages/Administration/AdminPageList.razor +++ b/src/HopFrame.Web/Pages/Administration/AdminPageList.razor @@ -113,7 +113,7 @@ public string Url { get; set; } private AdminPage _pageData; - private IModelRepository _modelRepository; + private IModelProvider _modelProvider; private IEnumerable _modelBuffer; private AdminPageModal _modal; @@ -138,7 +138,7 @@ if (_pageData.RepositoryProvider is null) throw new ArgumentException($"AdminPage '{_pageData.Title}' does not specify a model repository!'"); - _modelRepository = _pageData.LoadModelRepository(Provider); + _modelProvider = _pageData.LoadModelProvider(Provider); _hasEditPermission = _pageData.Permissions.Update is null || await Permissions.HasPermission(Auth.User, _pageData.Permissions.Update); _hasDeletePermission = _pageData.Permissions.Delete is null || await Permissions.HasPermission(Auth.User, _pageData.Permissions.Delete); @@ -154,7 +154,7 @@ } private async Task Reload() { - _modelBuffer = await _modelRepository.ReadAllO(); + _modelBuffer = await _modelProvider.ReadAllO(); _displayedModels = _modelBuffer.ToList(); _currentSortDirection = _pageData.DefaultSortDirection; @@ -238,7 +238,7 @@ }); if (result.IsConfirmed) { - await _modelRepository.DeleteO(entry); + await _modelProvider.DeleteO(entry); await Reload(); await Alerts.FireAsync(new SweetAlertOptions { diff --git a/src/HopFrame.Web/Repositories/GroupProvider.cs b/src/HopFrame.Web/Provider/GroupProvider.cs similarity index 91% rename from src/HopFrame.Web/Repositories/GroupProvider.cs rename to src/HopFrame.Web/Provider/GroupProvider.cs index 953a9d7..d93e970 100644 --- a/src/HopFrame.Web/Repositories/GroupProvider.cs +++ b/src/HopFrame.Web/Provider/GroupProvider.cs @@ -2,9 +2,9 @@ using HopFrame.Database.Models; using HopFrame.Database.Repositories; using HopFrame.Web.Admin; -namespace HopFrame.Web.Repositories; +namespace HopFrame.Web.Provider; -internal sealed class GroupProvider(IGroupRepository repo) : ModelRepository { +internal sealed class GroupProvider(IGroupRepository repo) : ModelProvider { public override async Task> ReadAll() { return await repo.GetPermissionGroups(); } diff --git a/src/HopFrame.Web/Repositories/UserProvider.cs b/src/HopFrame.Web/Provider/UserProvider.cs similarity index 91% rename from src/HopFrame.Web/Repositories/UserProvider.cs rename to src/HopFrame.Web/Provider/UserProvider.cs index 49ca30f..08a1754 100644 --- a/src/HopFrame.Web/Repositories/UserProvider.cs +++ b/src/HopFrame.Web/Provider/UserProvider.cs @@ -2,9 +2,9 @@ using HopFrame.Database.Models; using HopFrame.Database.Repositories; using HopFrame.Web.Admin; -namespace HopFrame.Web.Repositories; +namespace HopFrame.Web.Provider; -internal sealed class UserProvider(IUserRepository repo) : ModelRepository { +internal sealed class UserProvider(IUserRepository repo) : ModelProvider { public override async Task> ReadAll() { return await repo.GetUsers(); } diff --git a/test/FrontendTest/AdminContext.cs b/test/FrontendTest/AdminContext.cs index 3c9af86..2eaff8d 100644 --- a/test/FrontendTest/AdminContext.cs +++ b/test/FrontendTest/AdminContext.cs @@ -28,11 +28,11 @@ public class AdminContext : AdminPagesContext { .Parser((model, e) => model.AddressId = e.EmployeeId); generator.Page() - .ConfigureRepository() + .ConfigureProvider() .ListingProperty(e => e.Name); generator.Page
() - .ConfigureRepository() + .ConfigureProvider() .ListingProperty(a => a.City); } } \ No newline at end of file diff --git a/test/FrontendTest/Providers/AddressProvider.cs b/test/FrontendTest/Providers/AddressProvider.cs index 94b203e..de5f13f 100644 --- a/test/FrontendTest/Providers/AddressProvider.cs +++ b/test/FrontendTest/Providers/AddressProvider.cs @@ -4,7 +4,7 @@ using RestApiTest.Models; namespace FrontendTest.Providers; -public class AddressProvider(DatabaseContext context) : ModelRepository
{ +public class AddressProvider(DatabaseContext context) : ModelProvider
{ public override async Task> ReadAll() { return await context.Addresses.ToArrayAsync(); diff --git a/test/FrontendTest/Providers/EmployeeProvider.cs b/test/FrontendTest/Providers/EmployeeProvider.cs index 0eb2aff..89f7b84 100644 --- a/test/FrontendTest/Providers/EmployeeProvider.cs +++ b/test/FrontendTest/Providers/EmployeeProvider.cs @@ -4,7 +4,7 @@ using RestApiTest.Models; namespace FrontendTest.Providers; -public class EmployeeProvider(DatabaseContext context) : ModelRepository { +public class EmployeeProvider(DatabaseContext context) : ModelProvider { public override async Task> ReadAll() { return await context.Employees