From af24f304be458e4e6f971f95e8fd9dc02b2d69e6 Mon Sep 17 00:00:00 2001 From: Elitsa Marinovska <21998037+elit0451@users.noreply.github.com> Date: Fri, 24 Mar 2023 11:47:59 +0100 Subject: [PATCH] New Backoffice: Fix total number of items (health checks, log viewer, packages) (#14003) * Fix total number of items for health check controllers * Fix total amount of items for log viewer controller * Fixing AllMigrationStatusPackageController * Fixing total items for package controllers * Adding default implementation * Update Nerdbank.GitVersioning dependency to 3.5.119 --------- Co-authored-by: Ronald Barendse --- Directory.Build.props | 2 +- .../Group/AllHealthCheckGroupController.cs | 14 ++++-- .../LogViewer/AllLogViewerController.cs | 8 +++- ... AllMessageTemplateLogViewerController.cs} | 18 ++++---- .../AllSinkLevelLogViewerController.cs | 13 ++++-- .../AllSavedSearchLogViewerController.cs | 11 ++++- .../AllMigrationStatusPackageController.cs | 10 ++-- .../Created/AllCreatedPackageController.cs | 16 ++++--- .../HealthCheckViewModelsMapDefinition.cs | 23 +++------- .../LogViewerViewModelMapDefinition.cs | 46 +++---------------- .../Package/PackageViewModelMapDefinition.cs | 19 ++------ .../Services/ILogViewerService.cs | 12 +++-- .../Services/IPackagingService.cs | 18 ++++++-- .../Services/Implement/LogViewerService.cs | 16 ++++--- .../Services/Implement/PackagingService.cs | 9 ++++ 15 files changed, 115 insertions(+), 120 deletions(-) rename src/Umbraco.Cms.Api.Management/Controllers/LogViewer/{MessageTemplateLogViewerController.cs => AllMessageTemplateLogViewerController.cs} (70%) diff --git a/Directory.Build.props b/Directory.Build.props index 01cd3b1064..6def71bb1b 100644 --- a/Directory.Build.props +++ b/Directory.Build.props @@ -38,7 +38,7 @@ - + diff --git a/src/Umbraco.Cms.Api.Management/Controllers/HealthCheck/Group/AllHealthCheckGroupController.cs b/src/Umbraco.Cms.Api.Management/Controllers/HealthCheck/Group/AllHealthCheckGroupController.cs index 843d75b8b7..1fc1f40c2c 100644 --- a/src/Umbraco.Cms.Api.Management/Controllers/HealthCheck/Group/AllHealthCheckGroupController.cs +++ b/src/Umbraco.Cms.Api.Management/Controllers/HealthCheck/Group/AllHealthCheckGroupController.cs @@ -2,7 +2,6 @@ using Microsoft.AspNetCore.Http; using Microsoft.AspNetCore.Mvc; using Umbraco.Cms.Api.Common.ViewModels.Pagination; using Umbraco.Cms.Api.Management.Factories; -using Umbraco.Cms.Api.Management.Mapping.HealthCheck; using Umbraco.Cms.Api.Management.ViewModels.HealthCheck; using Umbraco.Cms.Core.Mapping; @@ -32,11 +31,16 @@ public class AllHealthCheckGroupController : HealthCheckGroupControllerBase [ProducesResponseType(typeof(PagedViewModel), StatusCodes.Status200OK)] public async Task>> All(int skip = 0, int take = 100) { - IEnumerable> groups = _healthCheckGroupPresentationFactory + IGrouping[] groups = _healthCheckGroupPresentationFactory .CreateGroupingFromHealthCheckCollection() - .Skip(skip) - .Take(take); + .ToArray(); - return await Task.FromResult(Ok(_umbracoMapper.Map>(groups))); + var viewModel = new PagedViewModel + { + Total = groups.Length, + Items = _umbracoMapper.MapEnumerable, HealthCheckGroupResponseModel>(groups.Skip(skip).Take(take)) + }; + + return await Task.FromResult(Ok(viewModel)); } } diff --git a/src/Umbraco.Cms.Api.Management/Controllers/LogViewer/AllLogViewerController.cs b/src/Umbraco.Cms.Api.Management/Controllers/LogViewer/AllLogViewerController.cs index d6275d8c7a..6a51228a48 100644 --- a/src/Umbraco.Cms.Api.Management/Controllers/LogViewer/AllLogViewerController.cs +++ b/src/Umbraco.Cms.Api.Management/Controllers/LogViewer/AllLogViewerController.cs @@ -55,7 +55,13 @@ public class AllLogViewerController : LogViewerControllerBase if (logsAttempt.Success) { - return Ok(_umbracoMapper.Map>(logsAttempt.Result)); + var viewModel = new PagedViewModel + { + Total = logsAttempt.Result!.Total, + Items = _umbracoMapper.MapEnumerable(logsAttempt.Result.Items) + }; + + return Ok(viewModel); } return LogViewerOperationStatusResult(logsAttempt.Status); diff --git a/src/Umbraco.Cms.Api.Management/Controllers/LogViewer/MessageTemplateLogViewerController.cs b/src/Umbraco.Cms.Api.Management/Controllers/LogViewer/AllMessageTemplateLogViewerController.cs similarity index 70% rename from src/Umbraco.Cms.Api.Management/Controllers/LogViewer/MessageTemplateLogViewerController.cs rename to src/Umbraco.Cms.Api.Management/Controllers/LogViewer/AllMessageTemplateLogViewerController.cs index 92679d9feb..abd4a02b6a 100644 --- a/src/Umbraco.Cms.Api.Management/Controllers/LogViewer/MessageTemplateLogViewerController.cs +++ b/src/Umbraco.Cms.Api.Management/Controllers/LogViewer/AllMessageTemplateLogViewerController.cs @@ -7,15 +7,16 @@ using Umbraco.Cms.Core; using Umbraco.Cms.Core.Mapping; using Umbraco.Cms.Core.Services; using Umbraco.Cms.Core.Services.OperationStatus; +using Umbraco.New.Cms.Core.Models; namespace Umbraco.Cms.Api.Management.Controllers.LogViewer; -public class MessageTemplateLogViewerController : LogViewerControllerBase +public class AllMessageTemplateLogViewerController : LogViewerControllerBase { private readonly ILogViewerService _logViewerService; private readonly IUmbracoMapper _umbracoMapper; - public MessageTemplateLogViewerController(ILogViewerService logViewerService, IUmbracoMapper umbracoMapper) + public AllMessageTemplateLogViewerController(ILogViewerService logViewerService, IUmbracoMapper umbracoMapper) { _logViewerService = logViewerService; _umbracoMapper = umbracoMapper; @@ -39,16 +40,17 @@ public class MessageTemplateLogViewerController : LogViewerControllerBase DateTime? startDate = null, DateTime? endDate = null) { - Attempt, LogViewerOperationStatus> messageTemplatesAttempt = await _logViewerService.GetMessageTemplatesAsync(startDate, endDate); + Attempt, LogViewerOperationStatus> messageTemplatesAttempt = await _logViewerService.GetMessageTemplatesAsync(startDate, endDate, skip, take); if (messageTemplatesAttempt.Success) { - IEnumerable messageTemplates = messageTemplatesAttempt - .Result - .Skip(skip) - .Take(take); + var viewModel = new PagedViewModel + { + Total = messageTemplatesAttempt.Result.Total, + Items = _umbracoMapper.MapEnumerable(messageTemplatesAttempt.Result.Items) + }; - return Ok(_umbracoMapper.Map>(messageTemplates)); + return Ok(viewModel); } return LogViewerOperationStatusResult(messageTemplatesAttempt.Status); diff --git a/src/Umbraco.Cms.Api.Management/Controllers/LogViewer/AllSinkLevelLogViewerController.cs b/src/Umbraco.Cms.Api.Management/Controllers/LogViewer/AllSinkLevelLogViewerController.cs index 018553911a..5ab99780a1 100644 --- a/src/Umbraco.Cms.Api.Management/Controllers/LogViewer/AllSinkLevelLogViewerController.cs +++ b/src/Umbraco.Cms.Api.Management/Controllers/LogViewer/AllSinkLevelLogViewerController.cs @@ -30,11 +30,16 @@ public class AllSinkLevelLogViewerController : LogViewerControllerBase [ProducesResponseType(typeof(PagedViewModel), StatusCodes.Status200OK)] public async Task>> AllLogLevels(int skip = 0, int take = 100) { - IEnumerable> logLevels = _logViewerService + KeyValuePair[] logLevels = _logViewerService .GetLogLevelsFromSinks() - .Skip(skip) - .Take(take); + .ToArray(); - return await Task.FromResult(Ok(_umbracoMapper.Map>(logLevels))); + var viewModel = new PagedViewModel + { + Total = logLevels.Length, + Items = _umbracoMapper.MapEnumerable, LoggerResponseModel>(logLevels.Skip(skip).Take(take)) + }; + + return await Task.FromResult(Ok(viewModel)); } } diff --git a/src/Umbraco.Cms.Api.Management/Controllers/LogViewer/SavedSearch/AllSavedSearchLogViewerController.cs b/src/Umbraco.Cms.Api.Management/Controllers/LogViewer/SavedSearch/AllSavedSearchLogViewerController.cs index 783e49c946..29bf2c85d3 100644 --- a/src/Umbraco.Cms.Api.Management/Controllers/LogViewer/SavedSearch/AllSavedSearchLogViewerController.cs +++ b/src/Umbraco.Cms.Api.Management/Controllers/LogViewer/SavedSearch/AllSavedSearchLogViewerController.cs @@ -5,6 +5,7 @@ using Umbraco.Cms.Api.Management.ViewModels.LogViewer; using Umbraco.Cms.Core.Mapping; using Umbraco.Cms.Core.Models; using Umbraco.Cms.Core.Services; +using Umbraco.New.Cms.Core.Models; namespace Umbraco.Cms.Api.Management.Controllers.LogViewer.SavedSearch; @@ -30,8 +31,14 @@ public class AllSavedSearchLogViewerController : SavedSearchLogViewerControllerB [ProducesResponseType(typeof(PagedViewModel), StatusCodes.Status200OK)] public async Task>> AllSavedSearches(int skip = 0, int take = 100) { - IEnumerable savedLogQueries = (await _logViewerService.GetSavedLogQueriesAsync()).Skip(skip).Take(take); + PagedModel savedLogQueries = await _logViewerService.GetSavedLogQueriesAsync(skip, take); - return Ok(_umbracoMapper.Map>(savedLogQueries)); + var viewModel = new PagedViewModel + { + Total = savedLogQueries.Total, + Items = _umbracoMapper.MapEnumerable(savedLogQueries.Items) + }; + + return Ok(viewModel); } } diff --git a/src/Umbraco.Cms.Api.Management/Controllers/Package/AllMigrationStatusPackageController.cs b/src/Umbraco.Cms.Api.Management/Controllers/Package/AllMigrationStatusPackageController.cs index c38399c6e0..bb5b51336e 100644 --- a/src/Umbraco.Cms.Api.Management/Controllers/Package/AllMigrationStatusPackageController.cs +++ b/src/Umbraco.Cms.Api.Management/Controllers/Package/AllMigrationStatusPackageController.cs @@ -33,12 +33,12 @@ public class AllMigrationStatusPackageController : PackageControllerBase { PagedModel migrationPlans = await _packagingService.GetInstalledPackagesFromMigrationPlansAsync(skip, take); - IEnumerable viewModels = _umbracoMapper.MapEnumerable(migrationPlans.Items); - - return Ok(new PagedViewModel() + var viewModel = new PagedViewModel { Total = migrationPlans.Total, - Items = viewModels, - }); + Items = _umbracoMapper.MapEnumerable(migrationPlans.Items) + }; + + return Ok(viewModel); } } diff --git a/src/Umbraco.Cms.Api.Management/Controllers/Package/Created/AllCreatedPackageController.cs b/src/Umbraco.Cms.Api.Management/Controllers/Package/Created/AllCreatedPackageController.cs index 042fa74644..fffe6a6dff 100644 --- a/src/Umbraco.Cms.Api.Management/Controllers/Package/Created/AllCreatedPackageController.cs +++ b/src/Umbraco.Cms.Api.Management/Controllers/Package/Created/AllCreatedPackageController.cs @@ -5,7 +5,7 @@ using Umbraco.Cms.Api.Management.ViewModels.Package; using Umbraco.Cms.Core.Mapping; using Umbraco.Cms.Core.Packaging; using Umbraco.Cms.Core.Services; -using Umbraco.Extensions; +using Umbraco.New.Cms.Core.Models; namespace Umbraco.Cms.Api.Management.Controllers.Package.Created; @@ -31,12 +31,14 @@ public class AllCreatedPackageController : CreatedPackageControllerBase [ProducesResponseType(typeof(PagedViewModel), StatusCodes.Status200OK)] public async Task>> All(int skip = 0, int take = 100) { - IEnumerable createdPackages = _packagingService - .GetAllCreatedPackages() - .WhereNotNull() - .Skip(skip) - .Take(take); + PagedModel createdPackages = await _packagingService.GetCreatedPackagesAsync(skip, take); - return await Task.FromResult(Ok(_umbracoMapper.Map>(createdPackages))); + var viewModel = new PagedViewModel + { + Total = createdPackages.Total, + Items = _umbracoMapper.MapEnumerable(createdPackages.Items) + }; + + return await Task.FromResult(Ok(viewModel)); } } diff --git a/src/Umbraco.Cms.Api.Management/Mapping/HealthCheck/HealthCheckViewModelsMapDefinition.cs b/src/Umbraco.Cms.Api.Management/Mapping/HealthCheck/HealthCheckViewModelsMapDefinition.cs index 72ac422968..1aefa7be91 100644 --- a/src/Umbraco.Cms.Api.Management/Mapping/HealthCheck/HealthCheckViewModelsMapDefinition.cs +++ b/src/Umbraco.Cms.Api.Management/Mapping/HealthCheck/HealthCheckViewModelsMapDefinition.cs @@ -1,6 +1,3 @@ -using NPoco.FluentMappings; -using Umbraco.Cms.Api.Common.ViewModels.Pagination; -using Umbraco.Cms.Api.Management.Controllers.HealthCheck.Group; using Umbraco.Cms.Api.Management.ViewModels.HealthCheck; using Umbraco.Cms.Core.HealthChecks; using Umbraco.Cms.Core.Mapping; @@ -11,19 +8,18 @@ public class HealthCheckViewModelsMapDefinition : IMapDefinition { public void DefineMaps(IUmbracoMapper mapper) { - mapper.Define((source, context) => new HealthCheckAction(), Map); - mapper.Define((source, context) => new HealthCheckActionRequestModel() { ValueRequired = false }, Map); - mapper.Define((source, context) => new HealthCheckResultResponseModel() { Message = string.Empty }, Map); - mapper.Define((source, context) => new HealthCheckViewModel() { Name = string.Empty }, Map); + mapper.Define((_, _) => new HealthCheckAction(), Map); + mapper.Define((_, _) => new HealthCheckActionRequestModel { ValueRequired = false }, Map); + mapper.Define((_, _) => new HealthCheckResultResponseModel { Message = string.Empty }, Map); + mapper.Define((_, _) => new HealthCheckViewModel { Name = string.Empty }, Map); mapper.Define, HealthCheckGroupPresentationModel>( - (source, context) => new HealthCheckGroupPresentationModel() + (_, _) => new HealthCheckGroupPresentationModel { Name = string.Empty, Checks = new List() }, Map); - mapper.Define, HealthCheckGroupResponseModel>((source, context) => new HealthCheckGroupResponseModel() { Name = string.Empty }, Map); - mapper.Define>, PagedViewModel>((source, context) => new PagedViewModel(), Map); + mapper.Define, HealthCheckGroupResponseModel>((_, _) => new HealthCheckGroupResponseModel { Name = string.Empty }, Map); } // Umbraco.Code.MapAll -ActionParameters @@ -92,11 +88,4 @@ public class HealthCheckViewModelsMapDefinition : IMapDefinition target.Name = source.Key; } } - - // Umbraco.Code.MapAll - private static void Map(IEnumerable> source, PagedViewModel target, MapperContext context) - { - target.Items = context.MapEnumerable, HealthCheckGroupResponseModel>(source); - target.Total = source.Count(); - } } diff --git a/src/Umbraco.Cms.Api.Management/Mapping/LogViewer/LogViewerViewModelMapDefinition.cs b/src/Umbraco.Cms.Api.Management/Mapping/LogViewer/LogViewerViewModelMapDefinition.cs index d6d6e3e380..3b0db30fcf 100644 --- a/src/Umbraco.Cms.Api.Management/Mapping/LogViewer/LogViewerViewModelMapDefinition.cs +++ b/src/Umbraco.Cms.Api.Management/Mapping/LogViewer/LogViewerViewModelMapDefinition.cs @@ -1,10 +1,8 @@ -using Umbraco.Cms.Api.Common.ViewModels.Pagination; using Umbraco.Cms.Api.Management.ViewModels.LogViewer; using Umbraco.Cms.Core.Logging; using Umbraco.Cms.Core.Logging.Viewer; using Umbraco.Cms.Core.Mapping; using Umbraco.Cms.Core.Models; -using Umbraco.New.Cms.Core.Models; namespace Umbraco.Cms.Api.Management.Mapping.LogViewer; @@ -12,23 +10,19 @@ public class LogViewerViewModelMapDefinition : IMapDefinition { public void DefineMaps(IUmbracoMapper mapper) { - mapper.Define((source, context) => new LogLevelCountsReponseModel(), Map); + mapper.Define((_, _) => new LogLevelCountsReponseModel(), Map); mapper.Define, LogMessagePropertyPresentationModel>( - (source, context) => new LogMessagePropertyPresentationModel() { Name = string.Empty }, Map); - mapper.Define, LoggerResponseModel>((source, context) => new LoggerResponseModel() { Name = string.Empty }, Map); + (_, _) => new LogMessagePropertyPresentationModel { Name = string.Empty }, Map); + mapper.Define, LoggerResponseModel>((_, _) => new LoggerResponseModel { Name = string.Empty }, Map); mapper.Define( - (source, context) => new SavedLogSearchResponseModel() + (_, _) => new SavedLogSearchResponseModel { Name = string.Empty, Query = string.Empty }, Map); - mapper.Define((source, context) => new LogTemplateResponseModel(), Map); - mapper.Define((source, context) => new LogMessageResponseModel(), Map); - mapper.Define>, PagedViewModel>((source, context) => new PagedViewModel(), Map); - mapper.Define, PagedViewModel>((source, context) => new PagedViewModel(), Map); - mapper.Define, PagedViewModel>((source, context) => new PagedViewModel(), Map); - mapper.Define, PagedViewModel>((source, context) => new PagedViewModel(), Map); + mapper.Define((_, _) => new LogTemplateResponseModel(), Map); + mapper.Define((_, _) => new LogMessageResponseModel(), Map); } // Umbraco.Code.MapAll @@ -80,32 +74,4 @@ public class LogViewerViewModelMapDefinition : IMapDefinition target.Properties = context.MapEnumerable, LogMessagePropertyPresentationModel>(source.Properties); target.Exception = source.Exception; } - - // Umbraco.Code.MapAll - private static void Map(IEnumerable> source, PagedViewModel target, MapperContext context) - { - target.Items = context.MapEnumerable, LoggerResponseModel>(source); - target.Total = source.Count(); - } - - // Umbraco.Code.MapAll - private static void Map(IEnumerable source, PagedViewModel target, MapperContext context) - { - target.Items = context.MapEnumerable(source); - target.Total = source.Count(); - } - - // Umbraco.Code.MapAll - private static void Map(IEnumerable source, PagedViewModel target, MapperContext context) - { - target.Items = context.MapEnumerable(source); - target.Total = source.Count(); - } - - // Umbraco.Code.MapAll - private static void Map(PagedModel source, PagedViewModel target, MapperContext context) - { - target.Items = context.MapEnumerable(source.Items); - target.Total = source.Total; - } } diff --git a/src/Umbraco.Cms.Api.Management/Mapping/Package/PackageViewModelMapDefinition.cs b/src/Umbraco.Cms.Api.Management/Mapping/Package/PackageViewModelMapDefinition.cs index 76ce4300f8..b92e496e59 100644 --- a/src/Umbraco.Cms.Api.Management/Mapping/Package/PackageViewModelMapDefinition.cs +++ b/src/Umbraco.Cms.Api.Management/Mapping/Package/PackageViewModelMapDefinition.cs @@ -1,4 +1,3 @@ -using Umbraco.Cms.Api.Common.ViewModels.Pagination; using Umbraco.Cms.Api.Management.ViewModels.Package; using Umbraco.Cms.Core; using Umbraco.Cms.Core.Mapping; @@ -12,14 +11,10 @@ public class PackageViewModelMapDefinition : IMapDefinition { mapper.Define((_, _) => new PackageDefinition(), Map); mapper.Define( - (_, _) => new PackageDefinitionResponseModel - { - Name = string.Empty, - PackagePath = string.Empty - }, + (_, _) => new PackageDefinitionResponseModel { Name = string.Empty, PackagePath = string.Empty }, Map); - mapper.Define((_, _) => new PackageMigrationStatusResponseModel { PackageName = string.Empty }, Map); - mapper.Define, PagedViewModel>((_, _) => new PagedViewModel(), Map); + mapper.Define( + (_, _) => new PackageMigrationStatusResponseModel { PackageName = string.Empty }, Map); } // Umbraco.Code.MapAll -Id -PackageId -PackagePath -Macros @@ -72,12 +67,4 @@ public class PackageViewModelMapDefinition : IMapDefinition target.HasPendingMigrations = source.HasPendingMigrations; } - - // Umbraco.Code.MapAll - private static void Map(IEnumerable source, PagedViewModel target, MapperContext context) - { - PackageDefinition[] definitions = source.ToArray(); - target.Items = context.MapEnumerable(definitions); - target.Total = definitions.Length; - } } diff --git a/src/Umbraco.Core/Services/ILogViewerService.cs b/src/Umbraco.Core/Services/ILogViewerService.cs index 8df8e11718..570cd0ec2f 100644 --- a/src/Umbraco.Core/Services/ILogViewerService.cs +++ b/src/Umbraco.Core/Services/ILogViewerService.cs @@ -32,9 +32,11 @@ public interface ILogViewerService : IService string[]? logLevels = null); /// - /// Get all saved log queries from your chosen data source. + /// Get all saved log queries from your chosen data source as a paged model. /// - Task> GetSavedLogQueriesAsync(); + /// The amount of items to skip. + /// The amount of items to take. + Task> GetSavedLogQueriesAsync(int skip, int take); /// /// Gets a saved log query by name from your chosen data source. @@ -74,13 +76,15 @@ public interface ILogViewerService : IService Task> GetLogLevelCountsAsync(DateTime? startDate, DateTime? endDate); /// - /// Returns a list of all unique message templates and their counts. + /// Returns a paged model of all unique message templates and their counts. /// The attempt will fail if the log files for the given /// time period are too large (more than 1GB). /// /// The start date for the date range. /// The end date for the date range. - Task, LogViewerOperationStatus>> GetMessageTemplatesAsync(DateTime? startDate, DateTime? endDate); + /// The amount of items to skip. + /// The amount of items to take. + Task, LogViewerOperationStatus>> GetMessageTemplatesAsync(DateTime? startDate, DateTime? endDate, int skip, int take); /// /// Get the log level values of the global minimum and the UmbracoFile one from the config file. diff --git a/src/Umbraco.Core/Services/IPackagingService.cs b/src/Umbraco.Core/Services/IPackagingService.cs index 8fd4b0cdd6..42579ef3f4 100644 --- a/src/Umbraco.Core/Services/IPackagingService.cs +++ b/src/Umbraco.Core/Services/IPackagingService.cs @@ -2,6 +2,7 @@ using System.Xml.Linq; using Umbraco.Cms.Core.Models.Packaging; using Umbraco.Cms.Core.Packaging; using Umbraco.Cms.Core.Services.OperationStatus; +using Umbraco.Extensions; using Umbraco.New.Cms.Core.Models; namespace Umbraco.Cms.Core.Services; @@ -37,12 +38,21 @@ public interface IPackagingService : IService InstalledPackage? GetInstalledPackageByName(string packageName); - /// - /// Returns the created packages - /// - /// + [Obsolete("Use GetCreatedPackagesAsync instead. Scheduled for removal in Umbraco 15.")] IEnumerable GetAllCreatedPackages(); + /// + /// Returns the created packages as a paged model. + /// + /// The amount of items to skip. + /// The amount of items to take. + Task> GetCreatedPackagesAsync(int skip, int take) + { + PackageDefinition[] packages = GetAllCreatedPackages().WhereNotNull().ToArray(); + var pagedModel = new PagedModel(packages.Length, packages.Skip(skip).Take(take)); + return Task.FromResult(pagedModel); + } + /// /// Returns a created package by id /// diff --git a/src/Umbraco.Infrastructure/Services/Implement/LogViewerService.cs b/src/Umbraco.Infrastructure/Services/Implement/LogViewerService.cs index d3ca645079..9f5e67bccd 100644 --- a/src/Umbraco.Infrastructure/Services/Implement/LogViewerService.cs +++ b/src/Umbraco.Infrastructure/Services/Implement/LogViewerService.cs @@ -66,10 +66,12 @@ public class LogViewerService : ILogViewerService } /// - public async Task> GetSavedLogQueriesAsync() + public async Task> GetSavedLogQueriesAsync(int skip, int take) { using ICoreScope scope = _provider.CreateCoreScope(autoComplete: true); - return await Task.FromResult(_logViewerQueryRepository.GetMany().ToList()); + ILogViewerQuery[] savedLogQueries = _logViewerQueryRepository.GetMany().ToArray(); + var pagedModel = new PagedModel(savedLogQueries.Length, savedLogQueries.Skip(skip).Take(take)); + return await Task.FromResult(pagedModel); } /// @@ -146,21 +148,23 @@ public class LogViewerService : ILogViewerService } /// - public async Task, LogViewerOperationStatus>> GetMessageTemplatesAsync(DateTime? startDate, DateTime? endDate) + public async Task, LogViewerOperationStatus>> GetMessageTemplatesAsync(DateTime? startDate, DateTime? endDate, int skip, int take) { LogTimePeriod logTimePeriod = GetTimePeriod(startDate, endDate); // We will need to stop the request if trying to do this on a 1GB file if (CanViewLogs(logTimePeriod) == false) { - return Attempt.FailWithStatus( + return Attempt.FailWithStatus, LogViewerOperationStatus>( LogViewerOperationStatus.CancelledByLogsSizeValidation, - Enumerable.Empty()); + null!); } + LogTemplate[] messageTemplates = _logViewer.GetMessageTemplates(logTimePeriod).ToArray(); + return Attempt.SucceedWithStatus( LogViewerOperationStatus.Success, - _logViewer.GetMessageTemplates(logTimePeriod)); + new PagedModel(messageTemplates.Length, messageTemplates.Skip(skip).Take(take))); } /// diff --git a/src/Umbraco.Infrastructure/Services/Implement/PackagingService.cs b/src/Umbraco.Infrastructure/Services/Implement/PackagingService.cs index 7d8ec82800..cb174921b4 100644 --- a/src/Umbraco.Infrastructure/Services/Implement/PackagingService.cs +++ b/src/Umbraco.Infrastructure/Services/Implement/PackagingService.cs @@ -151,8 +151,17 @@ public class PackagingService : IPackagingService return Attempt.SucceedWithStatus(PackageOperationStatus.Success, package); } + [Obsolete("Use GetCreatedPackagesAsync instead. Scheduled for removal in Umbraco 15.")] public IEnumerable GetAllCreatedPackages() => _createdPackages.GetAll(); + /// + public async Task> GetCreatedPackagesAsync(int skip, int take) + { + PackageDefinition[] packages = _createdPackages.GetAll().WhereNotNull().ToArray(); + var pagedModel = new PagedModel(packages.Length, packages.Skip(skip).Take(take)); + return await Task.FromResult(pagedModel); + } + public PackageDefinition? GetCreatedPackageById(int id) => _createdPackages.GetById(id); ///